正規表現 Part7
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2010/03/19(金) 15:16:48質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。
【 前スレ 】 正規表現 Part6
http://pc12.2ch.net/test/read.cgi/tech/1241537764/
0002デフォルトの名無しさん
2010/03/19(金) 15:18:08正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm
Regular Expression(Riue ちゃんの正規表現講座)
http://www.sixnine.net/regexp/
正規表現パズル
http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/
詳説 正規表現
http://www.oreilly.co.jp/books/4873111307/
正規表現プログラミングFAQ
http://capslockabcjp.kitunebi.com/faq.html
JScript 正規表現の概説
http://msdn.microsoft.com/library/ja/script56/html/js56reconIntroductionToRegularExpressions.asp
.NET Framework 正規表現言語要素
http://msdn.microsoft.com/library/ja/cpgenref/html/cpconregularexpressionslanguageelements.asp
【 初心者 】 正規表現 【 入門 】
http://funcchan.blog16.fc2.com/
0003デフォルトの名無しさん
2010/03/19(金) 15:19:04[UNIX板] 正規表現
http://pc12.2ch.net/test/read.cgi/unix/1039165754/
[WebProg] 正規表現道場
http://pc11.2ch.net/test/read.cgi/php/1168450843/
◆前スレ
[1] http://pc8.2ch.net/test/read.cgi/tech/1062152374/
[2] http://pc8.2ch.net/test/read.cgi/tech/1131028296/
[3] http://pc11.2ch.net/test/read.cgi/tech/1156413899/
[4] http://pc11.2ch.net/test/read.cgi/tech/1186030400/
[5] http://pc12.2ch.net/test/read.cgi/tech/1212498448/
[6] http://pc12.2ch.net/test/read.cgi/tech/1241537764/
0004デフォルトの名無しさん
2010/03/19(金) 15:25:47●正規表現の使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
0005デフォルトの名無しさん
2010/03/19(金) 21:49:450006デフォルトの名無しさん
2010/03/20(土) 01:07:350007デフォルトの名無しさん
2010/03/20(土) 11:52:090008デフォルトの名無しさん
2010/03/20(土) 13:34:45カツカレー
0009デフォルトの名無しさん
2010/03/21(日) 22:59:000010デフォルトの名無しさん
2010/03/22(月) 09:31:520011デフォルトの名無しさん
2010/03/22(月) 10:36:03/ // /| r'7\ ,.ヘ‐'"´iヾ、/\ニ''ー- 、., / /
/ / | |::|ァ'⌒',ヽ:::ヽrヘ_,,.!-‐-'、二7-ァ'´|、__
`'ー-‐''" ヽ、_'´ `| |:::::|'" 二.,_> ,.へ_
/ //__// / / / `ヽ7::/
か っ も | / // メ,/_,,. /./ /| i Y //
ァ て う. |'´/ ∠. -‐'ァ'"´'`iヽ.// メ、,_ハ , |〉
| 約 ク ヽ! O .|/。〈ハ、 rリ '´ ,ァ=;、`| ,ハ |、 /
| 束 ソ > o ゜,,´ ̄ . ト i 〉.レ'i iヽ|ヽ、.,____
| し ス / ハ | u ,.--- 、 `' ゜o O/、.,___,,..-‐'"´
| た レ | / ハ, / 〉 "从 ヽ! /
| じ は |,.イ,.!-‐'-'、,ヘ. !、_ _,/ ,.イヘ. ` ヽ.
ッ .ゃ .立 |/ ヽ!7>rァ''7´| / ', 〉`ヽ〉
! ! な て .', `Y_,/、レ'ヘ/レ' レ'
い .な ヽ、_ !:::::ハiヽ. // /
で い ./‐r'、.,_,.イ\/_」ヽ ', / /
す / `/:::::::/ /,」:::iン、 / /
〈 ,,..-‐''"´ ̄ ̄77ー--、_\.,__ /
,.:'⌒ヽ ´ | | , i |ノ `ヾr-、
0012デフォルトの名無しさん
2010/03/22(月) 23:24:39┃ ┌────────────────────────ーーー┐ ┃
┃ │ / ̄ ̄\ │ ┃
┃ │ / ヽ_ .\ │ ┃
┃ │ ( ●)( ●) | ____ │ ┃
┃ │ (__人__) | / \ .| ┃
┃ │ l` ⌒´ | / ─ ─ \ │ ┃
┃ │ . { |/ (●) ( ●) \ .| ┃
┃ │ { / | (__人__) | │ ┃
┃ │ ,-、 ヽ ノ、\ ` ⌒´ ,/__ .| ┃
┃ │ / ノ/ ̄/ ` ー ─ '/>< ` ー─ ' ┌、 ヽ ヽ、 │ ┃
┃ │ / L_  ̄ / _l__( { r-、 .ト、 . │ ┃
┃ │ _,,二) / 〔― ‐} Ll | l) ).│ ┃
┃ │ >_,フ / }二 コ\ Li‐' .| ┃
┃ │ __,,,i‐ノ l └―イ ヽ | . | ┃
┃ │ l i ヽl . | ┃
┃ └ーーー────────────────────────┘ ┃
┗-━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
平成22年3月22日 クソスレにて
0013デフォルトの名無しさん
2010/03/23(火) 00:04:21/ / '" / / ,,-、 /、ヽ\ ゙i;,-''" / ./ /─''''" ̄ ,,/
/ ./ / ,,,-‐'"-/ / ./ ゙" "\ ゙i;, | 、// / " ,,,/
/ ,-''/ / ,,-''"_ / // ヽ l / レ'/~ /‐/
/ / | l| ,,-'"/゙/,」| / ..::;;;,,, } / |~ ,,-‐,,,-''' //~
/ /-'''''| | /l /‐'''/'' .人 i' .:: :;'" / / l ノ゙i// ,,-‐'"──==
//'" ゙i;: | /‐' ./,, ,,ノ ゙i;,. | _,,-ヾ.// ノ ,-''" l | ‐'" ,,,-‐二
レ' ヽl:i' ./ )'、‐,\゙i;: | ,,,-‐二-┬ナ" /‐'"‐ 〉 ,i'───'''" ̄~-''"
,-‐',ヽ|'" ./゙ヽ-ゝ='\゙i,'''ヽ -゙=‐' '" ,‐'ノ,, /‐''" ,,-‐'''"~
/ / ;;:. ──ヽ, ゙i;'''''' , ゙ "-‐'''''""" 〔_,/ ゙ヽ'-'"~
/ / / ,; ,,_}_ ゙、 ./__,, _,, / \
,;' / ,;;;:;:/;: ,, ~ ヽ ヽ. ヽニ‐'、 / / ゙i,_ おめぇ、ここ大丈夫か?
./ '' ,l,,,,,,/ 〉 ゙ヽ、 '''' ,,-''" / ゙i.\
/ / ヽ / ゙ヽ、--イ~;;:'" // ::;:;:;: | \
i /  ̄ ゙̄" |;:" // ヽ-‐'''"~l|
./ ゙''''ヽ、,,-‐''" .i /,;'" _,,,,,,,,,_,,,-‐'''-''"~ |
(" ̄"'''''‐--、,,_i' // '",,-─'''" ,,,-‐'",-‐'" ,,,,-‐ .___|
i' ゙'':::::::::::::::::::::::}
0014デフォルトの名無しさん
2010/03/24(水) 10:40:440015デフォルトの名無しさん
2010/03/24(水) 12:06:37WzやMIFESが正規表現を使えるかどうか知らんが、削除したい文字数が判っているなら"^..."などでできるだろ。
001614
2010/03/24(水) 19:29:29無知な私にはネットで調べても不明でした。
0017デフォルトの名無しさん
2010/03/24(水) 22:58:06わからんなら正規表現なんて使わなきゃいいのに
0018デフォルトの名無しさん
2010/03/25(木) 00:14:410019デフォルトの名無しさん
2010/03/25(木) 00:22:06ご自分は"えきすぱあと"なおつもりでいらっしゃるようにお見受けしますが、
全員えきすぱあと な訳がないし、
別にいいじゃねぇか、そういうスレなんだし。
0020デフォルトの名無しさん
2010/03/25(木) 00:23:41〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
0021デフォルトの名無しさん
2010/03/25(木) 00:31:06産湯でサッパリした彼はおもむろにビールを飲み干しPCに向かい正規表現を操っていた。
そんな夢のような夢を見たのだろうw
0022デフォルトの名無しさん
2010/03/25(木) 00:38:080023デフォルトの名無しさん
2010/03/25(木) 00:59:21>でも小学生のころの俺でもなんとなく使いこなしてたんだから
性器表現の話はスレ違い
0024デフォルトの名無しさん
2010/03/25(木) 01:13:030025デフォルトの名無しさん
2010/03/25(木) 01:17:140026デフォルトの名無しさん
2010/03/25(木) 01:21:00お前のツッコミがつまらなさすぎる件
NSCで修行してこい
0027デフォルトの名無しさん
2010/03/25(木) 01:29:460028デフォルトの名無しさん
2010/03/25(木) 01:33:280029デフォルトの名無しさん
2010/03/25(木) 01:42:45こういう>>17のような子は
友達が出来ない > 社会生活が送れない > ゲームに耽る > 更に孤立する > 常に不満を抱える
家族すら見放しているので誰も注意しない、本人にも自覚が無いから抜け出せない。
唯一の捌け口が2chで暴言を吐くこと。
003017
2010/03/25(木) 02:04:40本当に調べて、調べた上で全く判らなかったっていうなら、
正規表現に手を出すには時期尚早じゃね?って親切心だったんだけどな。
0031デフォルトの名無しさん
2010/03/25(木) 02:07:330032デフォルトの名無しさん
2010/03/25(木) 02:41:07恐ろしい程の馬鹿だなお前w
0033デフォルトの名無しさん
2010/03/25(木) 16:52:35鮮 い ァ
人 じ ビ
に . だ. ゃ っ
だ . も な て
を . の い . も
圖 か
.∧_∧
∩#`Д´>'')
ヽ ノ
0034デフォルトの名無しさん
2010/03/25(木) 16:57:420035デフォルトの名無しさん
2010/03/25(木) 17:10:59http://www.google.com/search?num=100&lr=lang_ja&q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE
0036デフォルトの名無しさん
2010/03/25(木) 17:30:02_ _, ,_
( ´)`Д) )) < ハァハァ こんな所でダメェ
/ つ つ < 大丈夫だって,こんな糞スレ誰も来ねえよ
(( (_(_ ノ ノ
し∪ ∪
_, ,_ _, ,_
Σ( ゚д゚ )゚д゚)
/ つ つ
(_(_ ノ ノ
し∪ ∪
_, ,_ _, ,_
( ゚д゚ )゚д゚)
/ つ つ
(( (_(_ ノ ノ
し∪ ∪
0037デフォルトの名無しさん
2010/03/26(金) 12:08:13テンプレの初心者用正規表現サイトで演算子一覧見てたら質問するまでもない
自分で理解する気ゼロでそのままズバリの解答だけ欲しいってのが丸見え
「行頭から何文字かを削除する正規表現」で検索してもそりゃ出てこないだろうよ
0038デフォルトの名無しさん
2010/03/26(金) 12:10:590039デフォルトの名無しさん
2010/03/26(金) 16:24:11/: : /:: : : / : : : !:: : : : !: : !: : : ヽ:: : : : : ',
/: : /: : : 斗--、 :|: : : : :|: : | ,ィT: ',: : :ヽ : !
|: : |: : : : : |: / \: : /|:.ィ: :ヽ: : :.|.: : : ト、:|
|: : |: : : : /!/ ⌒ヽ| :/ |:./⌒ヽV: |.: : : | V
< : _: : : / 〈 {} |/ レ {} }|:./ヽ: : |
<:: |. 小{ _,,.. - 、-.,_ レ{: :.|ヽ:| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
厶ヘ ハ 、 {ハ/ V | いい加減にしてくれよっ!
\_! _ ' ! | 正直言って気持ち悪い!!
ヽ / `t / <
___,r| \ { / / \____________
/:/::::| \ ヽ `_⌒ ィ ´ (⌒)
/::::::/::::::| \ ´ ∧>、 ノ ~.レ-r┐、
/:::::::::::/::::::::| \ / !\::`ー- 、 ノ__ | .| | |
0040デフォルトの名無しさん
2010/03/26(金) 16:36:51/ ヽ
/ l
| ヽ / |
rl 〉 __ ___ 〈 /-,
|゙i| <.(・)` i '´(・)> .!/il
ヽl ..:| |_ノ
l /ヽ___ハ l
ヽ ヽ ー==‐ ' / /
_/| ヾ、 /|ヽ、
::::::l ` --- ' l:::::::::ヽ、__
クソスレア・ゲルナー[xoslair Gellner]
(1914〜1989 イギリス)
0041デフォルトの名無しさん
2010/03/26(金) 17:28:35Controlという文字をReplaceしたいのですがControlsを除外したい場合どのように書けばいいのでしょうか?
0042デフォルトの名無しさん
2010/03/26(金) 17:34:42気に入らないor答えられないならスルーしておけ。
おれみたいにな。
0043デフォルトの名無しさん
2010/03/26(金) 17:44:52.netはずいぶん使ってないから間違ってるかも
でもそのレベルなら
・"Control"の出現位置を調べて次の文字が"s"以外なら部分上書きする
・/Control(s)?/でマッチをかけてコールバック内で$1を元に条件分岐
みたいな地道で理解しやすいアプローチをお勧めする
0044デフォルトの名無しさん
2010/03/26(金) 20:28:56ありがとうございます。
できました。
0045デフォルトの名無しさん
2010/03/26(金) 20:30:33""で囲まれた文字などをヒットさせたいんですが
(")([.\/a-zA-Z0-9]+)(")
とかやってみたのですがかかってくれません
あとコメントやリテラルの中に日本語があった場合はどうかければいいんでしょうか?
0046デフォルトの名無しさん
2010/03/26(金) 20:36:310047デフォルトの名無しさん
2010/03/26(金) 20:39:09ありがとうございます
0048デフォルトの名無しさん
2010/03/26(金) 20:46:20言語が何か知らんけど、ダブルクォートがエスケープされて入ってるとかは考えなくて良いのか?
0049デフォルトの名無しさん
2010/03/26(金) 20:55:44"(?:[^"\\]|\\.)*"
0050デフォルトの名無しさん
2010/03/26(金) 20:58:32基本的な書き方できればそこからなんとか^^
0051デフォルトの名無しさん
2010/03/26(金) 21:45:260052デフォルトの名無しさん
2010/03/26(金) 22:03:33codepadとかvcviewとかgoogle codeとか
0053デフォルトの名無しさん
2010/03/26(金) 22:06:41CVS and Subviersion viewer
0054デフォルトの名無しさん
2010/03/26(金) 22:10:30ttp://ideone.com/
005551
2010/03/26(金) 23:18:47google codeはじめ方がわからんw
codepad、Ideone.comは似たようなサービスですよね
C#のコードなので色分けが対応してないのが残念
viewvcはSubviersionの系統ですか
簡単なツール作ったけど結局正規表現のパターンに左右されてしまう・・・
0056デフォルトの名無しさん
2010/03/27(土) 02:38:130057デフォルトの名無しさん
2010/03/27(土) 03:11:11コードハイライトっていうのか
http://code.google.com/p/syntaxhighlighter/
いいのがあった
助かりました
0058デフォルトの名無しさん
2010/03/27(土) 13:01:360059デフォルトの名無しさん
2010/03/29(月) 20:37:33バナナ
apple
これらのどれかが含まれる場合にのみマッチするようにする記述を教えてください
0060デフォルトの名無しさん
2010/03/29(月) 20:40:200061デフォルトの名無しさん
2010/03/29(月) 21:25:25一応言ってみるけど、果物に分類されるものにマッチすることを望んでいるなら、正規表現以前の問題
0062デフォルトの名無しさん
2010/03/30(火) 08:49:450063デフォルトの名無しさん
2010/03/30(火) 11:26:32という行にはマッチするけど、
if condition end
if condition endif
などの行にはマッチしない正規表現を教えてください。
condition のところには任意の文字列がくるとします。
とりあえず、処理系は Perl5.8 で。
if.+(?!end)$
などとしてみたけど、"if condition end" にマッチしてしまう。
0064デフォルトの名無しさん
2010/03/30(火) 11:44:36これはダサいww
(if )(condition)([ ])([^e][^n][^d])
0065デフォルトの名無しさん
2010/03/30(火) 12:05:58end, endifが行末か
0066デフォルトの名無しさん
2010/03/30(火) 12:12:58(if )([a-zA-Z0-9]+)( )([^e][^n][^d])
0067デフォルトの名無しさん
2010/03/30(火) 12:33:52if hoge add
がマッチしない
0068デフォルトの名無しさん
2010/03/30(火) 12:37:180069デフォルトの名無しさん
2010/03/30(火) 12:40:51???
マッチしたいものにマッチする、マッチさせたくないものにはマッチしない
が基本だろ。
0070デフォルトの名無しさん
2010/03/30(火) 12:41:220071デフォルトの名無しさん
2010/03/30(火) 12:41:260072デフォルトの名無しさん
2010/03/30(火) 12:42:08>>67
0073デフォルトの名無しさん
2010/03/30(火) 12:45:50するけど
0074デフォルトの名無しさん
2010/03/30(火) 12:48:07スペース入ったの見てる?
2chの文字だけで判断するなよ
0075デフォルトの名無しさん
2010/03/30(火) 13:00:33if.+(?!end)$
これって何でテストしてみたの?
perl5互換の.netの正規表現だとif hoge addしかかからないぞ
0076デフォルトの名無しさん
2010/03/30(火) 13:23:14perl5.8って戻り読み使えないんだっけ?
あと、「任意の文字列」には空文字列、end、endifも含まれるんだが
○ if endend
○ if hoge end fuga
× if end
でいいんだよな?
0077デフォルトの名無しさん
2010/03/30(火) 14:02:18(if)(.+)(endif|end)
だときっちりターゲット絞れるからと思って
(if)(.+)(?!end)
こうすると見事に駄目になるしな
プログラム的に
(if)(.+)(endif|end)
これの否定を検索みたいなことができなければ一度でやるのは無理じゃね?
一度抽出して結果を交えてどうにかするならいけそうだが
0078デフォルトの名無しさん
2010/03/30(火) 14:26:24正規表現にポリモフィズムが導入されれば可能になるだろうな
0079デフォルトの名無しさん
2010/03/30(火) 15:42:19○ abc
○ Bbc
× ABC
みたいな正規表現はどうなりますか?
0080デフォルトの名無しさん
2010/03/30(火) 21:15:08^if.+(?<!\send)(?<!\sendif)$
>>79
(?=.*[a-z])[A-Za-z]+
0081デフォルトの名無しさん
2010/03/30(火) 21:57:29^if .*(?<! end(if)?)$
>>80 1つ目
それだと、ifhoge とかもマッチしちゃう
0082デフォルトの名無しさん
2010/03/30(火) 22:00:21完璧な正解求めて時間浪費しすぎだろ
end endif含めたパターン抽出して結果からend endif含むところだけリプレースか何かで
潰しちゃえばすむことなのに
0083デフォルトの名無しさん
2010/03/30(火) 23:22:21回答する側はずいぶんいい加減でもいいんですねw
0084デフォルトの名無しさん
2010/03/30(火) 23:37:590085デフォルトの名無しさん
2010/03/31(水) 00:22:23それ、Perlじゃ通らん。
Variable length lookbehind not implemented in regex m/^if .*(?<! end(if)?)$/
0086デフォルトの名無しさん
2010/03/31(水) 00:37:270087デフォルトの名無しさん
2010/03/31(水) 17:00:25<div><a:hhh /></div>
<div><b:iii e="foo"/></div>
<h2>bar</h2>
<p><c:jjj>yahoo</c:jjj></p>
これで
<a:hhh />
<b:iii e="foo"/>
<c:jjj>yahoo</c:jjj>
この部分を取得したいのですがよろしくお願いします。
共通事項としては、<A:B>の形式で、タグ形式で終了します。
008887
2010/03/31(水) 17:01:330089デフォルトの名無しさん
2010/03/31(水) 17:37:57<b:iii e="</b:iii></b:iii></b:iii>"/>
<c:jjj>yah<c:jjj>oo</c:jjj></c:jjj>
というのもアリ?
009087
2010/03/31(水) 17:42:29レスありがとうございます。
ネストは全く考えていませんでした。
ネストするとかなりややこしくなってしまいますね。
とりあえずなしでお願いします。
0091デフォルトの名無しさん
2010/03/31(水) 18:43:30http://www.oreilly.co.jp/books/9784873114507/
出るらしい
0092デフォルトの名無しさん
2010/04/05(月) 06:31:50で'y'を','などのリテラルに置換するのは簡単ですが、
xx,xx,xx,
制御コードに置換するにはどうするのでしょうか。
xx
xx
xx
ソースコード整形でよく使うのでとくにy -> \nとy -> \r\n の置換をお願いします。
当方javaですが他のでも一応理解できます。
0093デフォルトの名無しさん
2010/04/05(月) 06:59:290094デフォルトの名無しさん
2010/04/05(月) 14:31:34xxnxxnxxn
になります。replaceでも言語やソフトが制御コードの出力をサポートしていればいいのですが、
ただの"\n"や
\n
\\n
などは'\' 'n' に置き換えられるので他の方法はないでしょうか。
0095デフォルトの名無しさん
2010/04/05(月) 14:43:260096デフォルトの名無しさん
2010/04/05(月) 15:26:20そんなはずがねえだろかす
0097デフォルトの名無しさん
2010/04/05(月) 22:41:17コードを示んだ。どこか間違えているから。
0098デフォルトの名無しさん
2010/04/06(火) 02:58:27replac "xxy", "xx\n" で普通ならマッチの類推で改行するように思いますがnetbeansのエディタだと
xxnxxnxxn なんです。
マッチのときと違い、置換のときの \ はエスケープ機能固定で、'\n'のとき'n'と解釈のようです。
replac "xxy", "xx\\n" なら \ n になり
xx\nxx\nxx\n で一行のままです。そういうアプリ(モジュール)のようです。
他のエディタならエスケープで無く制御コード出力の解釈で改行になるようですけど。
つまり質問のように置換のとき制御コード(0x0Aなど)を出すにはどうすればよいでしょうか。
0099デフォルトの名無しさん
2010/04/06(火) 08:21:490100デフォルトの名無しさん
2010/04/06(火) 08:57:48そっちで置換するのもいいかもねw
エスケープシーケンスなんて使わなくても制御コードそのまんまで置換できるし
0101デフォルトの名無しさん
2010/04/06(火) 09:00:560102デフォルトの名無しさん
2010/04/06(火) 10:33:040103デフォルトの名無しさん
2010/04/06(火) 16:22:450104デフォルトの名無しさん
2010/04/08(木) 11:47:360105デフォルトの名無しさん
2010/04/09(金) 03:51:09戻り読み無しなら
/^if +(?!end)(?!endif)(\w{0,4}|\w{1,2}(?! end)\w{4}|\w+(?! endif)\w\w(?! end)\w{4}) *$/
戻り読みありなら
/^if +\w+(?<! endif)(?<! end) *$/
自分では、なにか抜けがありそうで怖くて使わないだろうけど
エディタで使うとかじゃない限りは
一度にマッチさせようとせず、別条件で除外するのが普通ですよね
0106デフォルトの名無しさん
2010/04/09(金) 15:44:13http://www.mnet.ne.jp/~nakama/
どっちが元祖なんだろう
0107デフォルトの名無しさん
2010/04/11(日) 22:14:56意味は同じですよね。
0108デフォルトの名無しさん
2010/04/12(月) 22:20:16ファイルリストから目的の拡張子だけを持つファイル名を抽出したいのですが
例えば
C:\aaaa\bbbb\hogehoge.txt
を抽出するなら [^\\]+(?=\.txt) でいいかと思うんですが、逆に「txt以外のファイル名」としたときに [^\\]+(?!\.txt) では全て選択出来てしまいます。
色々考えた結果
[^\\]+(?=\.(?!txt)) だと目的の動作をすることは分かったのですが、 [^\\]+(?!\.txt) が駄目な理由がいくら考えても分かりません。どなたか解説お願いしたいです。
「¥」を除く1回以上の繰り返しの後ろに「.txt」がつかない場所にマッチする。
まあこれだけだと当然上の例なら「aaaa」や「bbbb」も同じようにマッチするのは分かるんですが「hogehoge.txt」もマッチする理由がさっぱりなのです。
どなたかお願いします
0109デフォルトの名無しさん
2010/04/12(月) 23:22:440110デフォルトの名無しさん
2010/04/12(月) 23:23:15量指定子が全部食い尽くすから、("" != ".txt") は真
0111デフォルトの名無しさん
2010/04/12(月) 23:41:00・「C:\aaaa\bbbb\hogehoge.txt」に対して「(?=\.txt)」をマッチさせると e と . の間の一箇所のみがマッチ
→[^\\]+ を欲張りにマッチさせて「hogehoge」
・「C:\aaaa\bbbb\hogehoge.txt」に対して「(?!\.txt)」をマッチさせると e と . の間以外のすべてがマッチ
→[^\\]+ を欲張りにマッチさせて「hogehoge.txt」(t と行末の間までマッチ)
ってことじゃないのかな
0112デフォルトの名無しさん
2010/04/13(火) 15:31:26けど量指定子が全部食うなら [^\\]+(?=\.txt) でおkな理由もよく分からんし
結局>>111の用に先読みが位置アンカーとしか動作しないことをよく考えるべきなのかなかな?
0113108=112
2010/04/13(火) 17:34:02[^\\]+(?!\.txt) と (?!\.txt)[^\\]+ は同じ結果になる。
[^\\]+(?=\.txt) と (?=\.txt)[^\\]+ は結果が違う。
やっぱり>>110と>>111さんのいうことでOKなんですね。
「C:\aaaa\bbbb\hogehoge.txt」
(?!\.txt)[^\\]+でヒットするのは「.txt」の「.」の前以外の場所全て。その場所を起点として後ろ側で[^\\]+が当てはまる所は全部食う。
[^\\]+(?!\.txt)でも結局「.」の前以外の全ての場所になり、[^\\]+で食うので今回の例の場合は結果が変わらず。
[^\\]+(?=\.txt)なら「.」の前でのみヒットし、その前で[^\\]+も当てはまる所は食う。(?=\.txt)[^\\]+なら後ろ側を食うので結果が違う。
[^\\]+(?=\.(?!txt))
位置検索で「txt」じゃない場所を探す→たくさんのヒットの中から「.」があるところを検索→それより前の部分で[^\\]+ =ファイル名
はあ大分スッキリしました。結局先読みを「^」や「$」と同じように考えればいいんですね、多分
答えくれた方々ありがとやんした!
0114デフォルトの名無しさん
2010/04/13(火) 19:02:56おkに決まってるだろ
あほか
0115デフォルトの名無しさん
2010/04/13(火) 19:09:320116デフォルトの名無しさん
2010/04/14(水) 03:15:36preg_match("/^[ぁ-ゞ]+$/u",$str)
をUTF-8 コード表記にすると
preg_match("/^(\xe3\x81[\x81-\xbf]|\xe3\x82[\x80-\x9e])+$/",$str)
と、某所にあったのですが、\xe3\x81〜 の意味が判りません
ぁ:0x3041 む:0x3080 ゞ:0x309E は判ったのですが、どういう法則で、\xe3\x81〜となるのでしょうか?
コード表
http://www.unicode.org/charts/PDF/U3040.pdf
0117デフォルトの名無しさん
2010/04/14(水) 03:28:00U+309EはUTF-8だと\xe3\x82\x9e
UTF-8の3バイトめは\x80-\xbf
0118デフォルトの名無しさん
2010/04/14(水) 10:08:13ゼロ幅表明の場合、カーソルは移動せず、立ち止まってちょっと後ろを振り返って
みたり、先を見渡してみたりして思ったような正規表現になっているかを確認する
作業だったような気がします。
[\\+]+(?=\.txt)
の場合は、「\.txt」の直前までカーソルが移動した状態でtrueとなる。
その後いくらカーソルを先に移動してもこの正規表現がtrueとなることはない。
[\\+]+(?!\.txt)
の場合は、「.txt」の直前までカーソルが移動した状態ではfalseだが、
「\.txt」の\.の直後以降にカーソルが移動した状態ではtrueとなる。
カーソルのイメージができればもっとスッキリできるのでは?
0119116
2010/04/14(水) 12:49:27>U+3041はUTF-8だと\xe3\x81\x81
レスありがとうございます
そういうのって、どういう法則なんでしょうか。
任意の文字の\xnn\xnn\xnn形式に変換するには、どーすれば。。
0120デフォルトの名無しさん
2010/04/14(水) 23:50:50自分で調べようよ…
Googleで「UTF-8 仕様」で検索してみるとかさ。
0121116
2010/04/15(木) 14:49:27全然、わかんないです。
0122デフォルトの名無しさん
2010/04/15(木) 14:59:08「エンコード体系」に書いてある内容でわからなければ、そもそも
プログラミングや文字コードの基礎が足りないので勉強しろとしか
いえないな。
0123デフォルトの名無しさん
2010/04/15(木) 15:08:28あんた馬鹿?
「u+3042 e3 81 82 あ」でぐぐって2番目にヒットしたサイトに解説があるんだけど。
曰く、
firstByte = 0xe0 | (ucs2 >> 12);
secondByte = 0x80 | ((ucs2 >> 6) & ((1 << 6) - 1));
thirdByte = 0x80 | (ucs2 & ((1 << 6) - 1));
とあるね。
0124デフォルトの名無しさん
2010/04/15(木) 15:11:31あんた馬鹿?
自分が調べたらええやん
0125デフォルトの名無しさん
2010/04/15(木) 16:13:52あんた馬鹿?
なんで乞食に餌与えるのよ
0126デフォルトの名無しさん
2010/04/15(木) 16:18:20あんた馬鹿?
いつまでスレ違いの話を続けるのよ。
0127デフォルトの名無しさん
2010/04/15(木) 18:58:09あんた馬鹿?
ネタに釣られるなんて
0128デフォルトの名無しさん
2010/04/16(金) 06:24:260129デフォルトの名無しさん
2010/04/16(金) 11:30:52これをあぼーんするNGEXは
^(あんた)*(馬鹿|バカ)?.+(ええやん)*
0130デフォルトの名無しさん
2010/04/16(金) 21:36:05うまくいきません。これの回避方法を教えてください。
0131デフォルトの名無しさん
2010/04/16(金) 21:40:02あ〜出来ました。いちど別の文字にしてから0に変えました。
0132デフォルトの名無しさん
2010/04/16(金) 22:03:22それ試してみたんだけど、必ずマッチが成功してしまうのだ。
これじゃあぼーんできないよ。。
0133デフォルトの名無しさん
2010/04/16(金) 22:30:16^[\s ]*<a\shref=.+>>\d.+<br>[\s ](あ[んな]た|おいら)*(馬鹿|バカ)[??]?.+(ええやん)*
0134デフォルトの名無しさん
2010/04/18(日) 19:49:050135デフォルトの名無しさん
2010/04/18(日) 19:50:390136デフォルトの名無しさん
2010/04/18(日) 20:15:590137デフォルトの名無しさん
2010/04/19(月) 18:12:57普通に${1}0ってしろよ。
0138デフォルトの名無しさん
2010/04/26(月) 16:47:510139デフォルトの名無しさん
2010/04/26(月) 17:52:46thx
0140デフォルトの名無しさん
2010/04/26(月) 18:00:01もうすこし表現が簡単になればいいのに
便利に使うための記述じゃないの?
0141デフォルトの名無しさん
2010/04/26(月) 18:37:070142デフォルトの名無しさん
2010/04/26(月) 18:40:37凹凸 これでいいか
0143デフォルトの名無しさん
2010/04/26(月) 18:41:11正規表現で選民意識かよきめえw
0144デフォルトの名無しさん
2010/04/26(月) 18:47:42♂
0145デフォルトの名無しさん
2010/04/26(月) 19:41:28ふくろう本あればもう他はいらなくね?
時々>>140みたいな香具師が開発チームにいて
「正規表現は可読性が落ちるから使うな」とか抜かすが、
そこは「お前の知識が浅いだけじゃん」とCoolに決めて黙らす
相手は団塊爺PGだったりするんだが昔は正規表現嫌われてたのかね
0146デフォルトの名無しさん
2010/04/26(月) 19:58:40こわいお(;_;)
0147デフォルトの名無しさん
2010/04/26(月) 20:00:30Unixへの憧れなしでパソコンユーザーだったおっさんとか、
メインフレーム屋やオフコン屋は拒否反応を示すのかも。
0148デフォルトの名無しさん
2010/04/26(月) 20:26:07偉い偉い
その優秀な頭脳でい仕事してくださいね!
0149デフォルトの名無しさん
2010/04/26(月) 20:36:37時間的にもおかしくない?
0150デフォルトの名無しさん
2010/04/26(月) 20:41:27偉い偉い
その優秀な頭脳でいっぱい仕事してくださいね!
0151145
2010/04/26(月) 21:08:58なるほどねー
パンチカード世代のUNIX系知らない団塊は毛嫌いするって事か
まぁ今更勉強しろとは言わないけど最低限読めるように頑張れよ>>150
0152デフォルトの名無しさん
2010/04/26(月) 23:51:58偉い偉い
その優秀な頭脳でいっぱい仕事してくださいね!
0153デフォルトの名無しさん
2010/04/26(月) 23:53:570154デフォルトの名無しさん
2010/04/27(火) 00:46:11既存の古いコードのメンテでもやってればいい
0155デフォルトの名無しさん
2010/04/27(火) 00:48:52偉い偉い
その優秀な頭脳で新しいコードいっぱい書いてくださいね!
0156デフォルトの名無しさん
2010/04/27(火) 01:37:230157デフォルトの名無しさん
2010/04/27(火) 01:44:59偉い偉い
その優秀な頭脳でバグのないコードいっぱい書いてくださいね!
0158デフォルトの名無しさん
2010/04/27(火) 01:45:25正規表現の後読みが使えるブラウザって存在するの?
どっかのブラウザが対応したらその流れでIE9でも対応しないかなと期待してるんだけど。
0159デフォルトの名無しさん
2010/04/27(火) 02:07:53基本的に、コアの実装はIEでさえ標準に準拠してる。
ブラウザ間の差があるのは、「クライアントサイドJavaScript」の部分。
0160デフォルトの名無しさん
2010/04/27(火) 02:22:28偉い偉い
その優秀な頭脳で後読みが使えるブラウザを書いてくださいね!
0161デフォルトの名無しさん
2010/04/27(火) 13:18:15このようなときに、先頭の0を取り除いて4を切り出すということは正規表現だけで実現できるでしょうか?
0162デフォルトの名無しさん
2010/04/27(火) 13:34:060163デフォルトの名無しさん
2010/04/27(火) 13:42:130164デフォルトの名無しさん
2010/04/27(火) 13:47:5920100403 の時に変なことになるし、
たぶんできない。
0165デフォルトの名無しさん
2010/04/27(火) 13:55:32と1桁ずつキャプチャしてつなげるとか?
0166デフォルトの名無しさん
2010/04/27(火) 16:54:53偉いなあお前らは
俺はワイルドカードも使えないがせいぜい頑張ってな
0167デフォルトの名無しさん
2010/04/27(火) 17:03:00ムリだろ。入り口が有限状態オートマトンの1状態にしか
対応させられないから1桁とるべき場合か2桁取るべき場合
かの情報の持ちようがない。
0168デフォルトの名無しさん
2010/04/27(火) 19:32:05(\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)
0169デフォルトの名無しさん
2010/04/27(火) 19:33:09(\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)
0170168=169
2010/04/27(火) 19:34:30^(\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)$
0171デフォルトの名無しさん
2010/04/27(火) 19:53:14後ろが行末じゃない場合にも対応するならこうかな
(\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)(?!\d)
0172デフォルトの名無しさん
2010/04/27(火) 20:17:03PerlやRubyで一行野郎と変わらない阿呆だな
0173デフォルトの名無しさん
2010/04/27(火) 21:01:58偉いなあお前は
優れたツール使って頑張ってな
0174デフォルトの名無しさん
2010/04/27(火) 21:33:410175デフォルトの名無しさん
2010/04/27(火) 22:34:36正規表現一本も読めない奴が、このスレで何してんの?
0176デフォルトの名無しさん
2010/04/27(火) 23:27:25優秀なんだな君は
俺はワイルドカードも使えないが正規表現で頑張ってね
0177デフォルトの名無しさん
2010/04/27(火) 23:45:23a = b
a^2 = ab
a^2 - b^2 = ab - b^2
(a + b)(a - b) = b(a - b)
a + b = b
2b = b
2 = 1
0178デフォルトの名無しさん
2010/04/28(水) 00:32:33なつかしすw
0179デフォルトの名無しさん
2010/04/28(水) 07:42:31a + b = b
0でわるな
0180デフォルトの名無しさん
2010/04/28(水) 08:49:34a=42
b=-22のとき
0181デフォルトの名無しさん
2010/04/28(水) 12:26:37「xxxx=任意&yyyyyyy=任意&zzzzzz=任意」
と言う文字列から任意の値を各々取るにはどうしたらいいでしょうか?
xyzの文字は各々固定で、任意には何文字入るかわかりません
0文字もあります
欲しい結果は3つ
xxxx=任意
yyyyyyy=任意
zzzzzz=任意
0182181
2010/04/28(水) 13:42:54sage忘れすまん
0183デフォルトの名無しさん
2010/04/28(水) 15:30:150185デフォルトの名無しさん
2010/04/28(水) 21:22:49●検索か置換か? 置換
●説明
行の最後が > じゃない行(改行コードだけの行も含む)の
改行コード を 改行コード<br>にしたい
改行コードは \n \r \r\n どれでもできるようにしたい
●対象データ
<p>あいうえお</p>
かきくけこ
<p>たちつてと</p>
●希望する結果
<p>あいうえお</p>
かきくけこ<br>
<p>たちつてと</p>
0186デフォルトの名無しさん
2010/04/28(水) 23:59:29解決方法がわからんかったので置き換えでごり押し。
s/([^>])(\r\n|[\n\r])/$1<br>$2/sg;
改行コードを統一すると、先読みでもう少しスタイリッシュにかけた。
s/(?<!>)(?=\n)/<br>/sg;
何に使うかしらないけど、出力先のOSをみて改行コードを置き換えてもいいと思うんだけど。
サンプルは以下。
my @str = (
"<p>aiueo</p>\nkakikukeko\n<p>sasisuseso</p>\n",
"<p>aiueo</p>\rkakikukeko\r<p>sasisuseso</p>\r",
"<p>aiueo</p>\r\nkakikukeko\r\n<p>sasisuseso</p>\r\n",
);
foreach(@str){
s/([^>])(\r\n|[\n\r])/$1<br>$2/sg;
s/\r\n?/\n/g; # 表示確認のため、改行コードを\nで統一
print;
print "-------------\n";
}
0187デフォルトの名無しさん
2010/04/29(木) 02:04:27ありがとうございます。
これをよく見て勉強します。
0188デフォルトの名無しさん
2010/04/29(木) 18:11:51こういう解法もある
s/(.)(\r\n|\n)/$1 eq '>' ? "$1$2" : "$1<br>$2"/sge;
eオプションが使えると色々応用が効くよ
0189デフォルトの名無しさん
2010/04/30(金) 00:25:130190デフォルトの名無しさん
2010/04/30(金) 02:26:32これをよく見て勉強します。
↑
頑張ってください
0191デフォルトの名無しさん
2010/04/30(金) 09:40:130192デフォルトの名無しさん
2010/05/02(日) 09:58:16正規表現には素人なので2つめのパターンをどう表現すればいいのかよく分かりませんでした。
どう書けば上手く置換できるのか教えてください。
1つめのパターン
[[XXXXX]] → {{abc|XXXXX|}} (XXXXXは任意の文字列)
2つめのパターン
[[XXXXX|XXXXX 《YYY》]] → {{abc|XXXXX|def=YYY|}} (置換前の2つのXXXXXは同一の文字列)
例えば
[[日本]] - [[アメリカ合衆国|アメリカ合衆国 《米国》]] - [[イギリス|イギリス 《英国》]] - [[ドイツ]] - [[フランス]] -
[[中華人民共和国|中華人民共和国 《中国》]] - [[大韓民国|大韓民国 《韓国》]] - [[グアテマラ|グアテマラ 《グァテマラ/ガテマラ》]] -
[[朝鮮民主主義人民共和国|朝鮮民主主義人民共和国 《北朝鮮》]] - [[メキシコ]] - [[ギリシャ|ギリシャ 《ギリシア》]]
のようなテキストを、
{{abc|日本|}} - {{abc|アメリカ合衆国|def=米国|}} - {{abc|イギリス|def=英国|}} - {{abc|ドイツ|}} - {{abc|フランス|}} -
{{abc|中華人民共和国|def=中国|}} - {{abc|大韓民国|def=中国|}} - {{abc|グアテマラ|def=グァテマラ/ガテマラ|}} -
{{abc|朝鮮民主主義人民共和国|def=北朝鮮|}} - {{abc|メキシコ|}} - {{abc|ギリシャ|def=ギリシア|}}
のように置換したいのです。
0193デフォルトの名無しさん
2010/05/02(日) 10:06:130194デフォルトの名無しさん
2010/05/02(日) 13:36:16という文字列に下記正規表現はマッチすると思うのですが
\{(.+)\} *, * \{(.+)\}
マッチしません。どこがまずいのですか?
0195デフォルトの名無しさん
2010/05/02(日) 13:44:040196デフォルトの名無しさん
2010/05/02(日) 13:46:07ありがとうございます。
スペースが入っていましたねw
気づきませんでした。
0197デフォルトの名無しさん
2010/05/02(日) 23:31:140198デフォルトの名無しさん
2010/05/03(月) 18:24:33何となく大学院まで行ったような学生よりよっぽど将来有望だ
でも3年間何もせずただ学校に通ってただけってんじゃ駄目だろ
何もしてないどころか勉強ばっかりやって3年間無駄に歳だけ喰って
社会じゃ役に立たない能書きだけ一人前になってたんじゃしょうがないだろ
だから普通科の高卒は中卒以下だって言ってんだよ
0199デフォルトの名無しさん
2010/05/05(水) 22:01:58(())でも、それぞれの中身を入れていく優れものだった。
あれの発展版で、文章(文章2(文章3)文章4)文章5(文章6(文章7)文章8)文章9
のそれぞれの文章を配列に入れれる正規表現はできないものだろうか?
0200デフォルトの名無しさん
2010/05/05(水) 22:25:370201デフォルトの名無しさん
2010/05/05(水) 22:34:50その正規表現って
((o)(o))ってあってもちゃんと乳首取れる?
ていうか言語クラス違うくね?できるもんなのか。
0202デフォルトの名無しさん
2010/05/05(水) 22:35:51姉はそれでおっぱい触られたって。
これひどくね?友達の姉の実話な。
0203デフォルトの名無しさん
2010/05/05(水) 22:48:00123456789 に対して 1(2(3)4)5(6(7)8)9 としたら
キャプチャ結果は 234, 3, 678, 7 になる
>>199が何を求めてるのかいまいちよくわからんが
0204デフォルトの名無しさん
2010/05/06(木) 08:53:49がデータだろうから 1(2(3)4)5(6(7)8)9 を与えたら 1, 2, 3, 4, 5, 6, 7, 8, 9 がほしいんだと思うぞ
一方ロシアでは split を使った
0205デフォルトの名無しさん
2010/05/06(木) 12:35:18日本語でOK。
0206デフォルトの名無しさん
2010/05/06(木) 15:17:54正規表現であって、文脈自由文法じゃないけどできるものなの?
ってことだよ。俺の理解不足だったらすまないが。
0207デフォルトの名無しさん
2010/05/06(木) 15:47:52たしかにネストなんか気にせずに'('と')'を区切り記号としてsplitするだけでいいな。
さすがロシア。
0208デフォルトの名無しさん
2010/05/06(木) 17:01:020209デフォルトの名無しさん
2010/05/06(木) 17:22:49CHAPTER01=00:00:00.000
CHAPTER01NAME=第一部 オープニング
CHAPTER02=00:09:13.400
CHAPTER02NAME=オラはにんきもの
こういうのを
TRACK 01 AUDIO
TITLE "第一部 オープニング"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "オラはにんきもの"
INDEX 01 09:13:40
こうしたいんですが、正規表現でできるもんなんでしょうか
できるとしたら答えを貰えるのが一番ですが、どこら辺を調べればいいのかヒントをもらえないでしょうか
0210デフォルトの名無しさん
2010/05/06(木) 19:01:48出来る
サクラエディタの正規表現はperl互換だからperlの正規表現調べればいけると思う
一応、答えると
CHAPTER(\d\d)\=(\d\d\:\d\d\:\d\d)\.\d\d\d\r\nCHAPTER\d\dNAME\=(.*?\r\n)
を
TRACK $1 AUDIO\r\nTITLE \"$3\"\r\nINDEX 01 $2\r\n
で置換すればいいんじゃないかと思う。
(一番最後のINDEX 01ってのがINDEX 02の間違いなら、置換をINDEX 01からINDEX $1に変えてね)
多分
0211デフォルトの名無しさん
2010/05/07(金) 00:19:48おお!出来ました。ありがとうございます。
正規表現はperlのが使えたんですね。これを機械に勉強してみます。
0212デフォルトの名無しさん
2010/05/12(水) 03:15:50あるテキストファイル内の文字列から、''や""で囲まれた場所以外の半角スペースとタブを削除したいんですが(preg_replace?)、
どんな感じにすればいいんでしょうか?
0213デフォルトの名無しさん
2010/05/15(土) 19:34:41NAME〜とENDは含みません。
NAME Haruhi Suzumiya
Haruhi is the title character and leader of the SOS Brigade, whose energetic and
eccentric character proves to be the driving force for the series.
She has a mind for adventure, which often leads her subordinates to be swept into her plans.
END
0214デフォルトの名無しさん
2010/05/15(土) 19:39:38NAME[\s ]?(?.+)\nEND
0215デフォルトの名無しさん
2010/05/19(水) 07:33:290216デフォルトの名無しさん
2010/05/19(水) 22:29:450217デフォルトの名無しさん
2010/05/19(水) 22:33:540218デフォルトの名無しさん
2010/05/19(水) 22:38:270219デフォルトの名無しさん
2010/05/20(木) 22:14:10●検索か置換か? 検索
●説明
りんごにマッチする文字列を検索。
青りんごは対象外としたい。
●対象データ
1,いちご、青りんご、みかん
2,いちご、青りんご、りんご
3,いちご、りんご、みかん
●希望する結果
2と3がマッチ
お願いします
0220デフォルトの名無しさん
2010/05/21(金) 00:45:520221デフォルトの名無しさん
2010/05/21(金) 01:46:36/\bりんご\b/
0222デフォルトの名無しさん
2010/05/21(金) 02:16:16りんごの括弧はいらないだろ。
>>221
蜜りんごは?ねぇ、俺の大好きな蜜りんごは?
0223デフォルトの名無しさん
2010/05/21(金) 05:39:03http://www.youtube.com/watch?v=yWZWWKOp9qU
http://www.youtube.com/watch?v=657bBDalKQo
http://www.youtube.com/watch?v=Fi_YvuAPdNg
http://www.youtube.com/watch?v=zzNZz590adI
http://www.youtube.com/watch?v=U3HqWCALUNs
http://www.youtube.com/watch?v=gUZj2i6U-aw
http://www.youtube.com/watch?v=iq9s9FJMk_c
http://www.youtube.com/watch?v=qTemVhatInQ
0224デフォルトの名無しさん
2010/05/21(金) 07:53:34ありがとうございます。
0225デフォルトの名無しさん
2010/05/21(金) 09:08:550226デフォルトの名無しさん
2010/05/21(金) 19:33:340227デフォルトの名無しさん
2010/05/22(土) 00:57:13JavaScript2.0? ※Firefox3.5.9+Greasemonkey 0.8.20100408.6+WindowsXP Pro SP3
●検索か置換か?
置換
●説明
( と ) ※括弧と括弧閉じを含む文字列を置換したい。
●対象データ
(Update:2010/01/02)
●希望する結果
(Update:2010/02/03)
続きを書きます。
0228277
2010/05/22(土) 01:00:01文字列を置換させたいです。
//文字を置換
var wordsBef = new Array();//置換前
var wordsAft = new Array();//置換後
wordsBrf.push("(Update:2010/01/02)");//置換前
wordsAft.push("(Update:2010/02/03)");//置換後
var body = document.body.innerHTML;
var i = 0;
for (i = 0; i < (words.length); i++) {
var w = new RegExp( words[i], "gi" );
var body = body.replace( w, words[i] );
}
document.body.innerHTML = body;
0229277
2010/05/22(土) 01:06:01文字の色を変えるのに使いたいです。※更新”されていない”ものは赤で表示。
TCP Monitor Plus (OGA'sさんのサイト)
http://hp.vector.co.jp/authors/VA032928/
//バージョン更新チェック
var color = new Array();
var words = new Array();
color.push("#FF0000");
words.push("Ver2.42");//TCP Monitor Plus
words.push("(Update:2010/04/30)");
var body = document.body.innerHTML;
var i = 0;
for (i = 0; i < (words.length); i++) {
var w = new RegExp( words[i], "gi" );
var body = body.replace(w, "<font color='" + color[0] + "'>" + words[i] + "</font>");
}
document.body.innerHTML = body;
どうかよろしくお願いいたします。
0230277
2010/05/22(土) 01:07:27変数の値に直接エスケープ文字を入れたくないという事です。
よろしくお願いします。
0231デフォルトの名無しさん
2010/05/22(土) 01:23:34本文読んでないけど、メタ文字をエスケープ出来れば済むのならjavascript quotemetaでぐぐるんだ
0232277
2010/05/22(土) 01:36:41(*・∀・)ノこんばんわ。
レスありがとうございます。
quotemetaはPerlでしか使えないのか〜(´・ω・`)と思っていたら、
メタ文字のエスケープ関数のサンプルが載っているサイトがありました。
//追加
function quote(str){
return str.replace(/\W/g, function($0){
return '\\' + $0;
});
};
//変更
var w = new RegExp( quote(words[i]), "gi" );
これで出来ました!
夜遅くにどうもありがとうございました!
0233デフォルトの名無しさん
2010/05/28(金) 22:43:12どれだけ無駄になりますか?とてつもなく無駄ですか?微々たるものですか?
0234デフォルトの名無しさん
2010/05/28(金) 22:52:06グローバルフラグをつけさえしなければ、
最初のマッチング位置以降の文字列は読み込まないので。
ただし、検索対象の文字列の中にマッチングする対象が無い場合は
グローバルフラグをつけた場合と同じぐらいコストがかさむ。
もう作っちゃったなら、性能問題出てから考えたら。
0235デフォルトの名無しさん
2010/05/28(金) 22:55:32どうもありがとうございます。特に何も感じなかったら気にしないことにします
0236デフォルトの名無しさん
2010/05/29(土) 02:17:39C# 3.0
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
{ と } に囲まれた文字列を検索したい
●対象データ
Memo[0]{
[Text] 対象データ
}
●希望する結果
[Text] 対象データ
よろしくお願いします
0237デフォルトの名無しさん
2010/05/30(日) 10:50:00亀レスだけど、
\(.*\)
で最長一致検索すれば、一番外側の()である
(い(う)え(おか)き)
にマッチする
ちなみに、\(.*?\)で最短一致検索すれば
"(い(う)"と"(おか)"の2箇所にマッチする
0238デフォルトの名無しさん
2010/06/01(火) 00:04:430239デフォルトの名無しさん
2010/06/01(火) 00:13:50/(\d+?)/g
とかやると切ないことになる
0240デフォルトの名無しさん
2010/06/01(火) 00:29:590241デフォルトの名無しさん
2010/06/01(火) 00:43:240242デフォルトの名無しさん
2010/06/01(火) 01:31:280243デフォルトの名無しさん
2010/06/01(火) 08:06:13ttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt
0244デフォルトの名無しさん
2010/06/01(火) 12:12:440245デフォルトの名無しさん
2010/06/04(金) 10:32:38aiueo
aiue
iueo
にはマッチするけどiueにはマッチしないってどう書けばいいですか?
/a?iueo?/
だとiueにもマッチしてしまって
/a?iueo|aiueo?/
だと期待通りにはなるのですが
重複する記述があるのでまとめられるならまとめたいです
共通する部分がiueじゃなくてもっと複雑になった場合など
0246デフォルトの名無しさん
2010/06/04(金) 11:08:31自己レスです
/a?(iue)o|a\1o?/
こうかな・・・
0247デフォルトの名無しさん
2010/06/04(金) 12:26:17僕もそう思った。
0248デフォルトの名無しさん
2010/06/06(日) 10:57:14javascriptです。
IMG00123123.jpgというような文字列が配列に大量にある。
そんな中で、例えばIMG00000012.jpgを検出したい。
そのものずばりで検索すれば、何も問題はないのですが、
不精をして、12だけで、マッチさせたい場合、どう考えればよいでしょう?
0249デフォルトの名無しさん
2010/06/06(日) 11:13:15("00000000" + "12").substr("12".length);
0250デフォルトの名無しさん
2010/06/06(日) 12:06:300251デフォルトの名無しさん
2010/06/06(日) 12:15:14ありがとうございます。
後ろから検索する事と、
文字列の長さを利用して、
"00000000"と"12"を分割する、という考え方ですね。
ちょっと検証してみます。
0252デフォルトの名無しさん
2010/06/06(日) 12:55:22あ、ありがとうございます。
現在>>249の考え方で検証中です。。
str:検索対象の文字列(ファイル名)例:IMG012312.jpg
a:検索の為の入力された数値 例:12
c=str.lastIndexOf(a+".")
if(c>-1)
{
d=str.slice(0,c);
e=(d.match(/[1-9]/).length
if(e>0)
{
alert("strは、00000012.jpgではない");
}else{
alert("strは、00000012.jpgだ");
}
おおよそこんな処理になるでしょうか?
0253デフォルトの名無しさん
2010/06/06(日) 13:06:180254デフォルトの名無しさん
2010/06/06(日) 14:13:08エラーだらけですみません。デバッグしてませんでした。
str="IMG001012.jpg ";
a=12;
c=str.lastIndexOf(a+".jpg") ;//後方から"12.jpg"で検索
//引っかかれば、12.jpgの部分がある
//なければ-1が帰ってくる
if(c>-1) {
//検索に引っかかった場合次は、
//文字列strの0番からc-1番までが、
//0以外の文字を含むか検証する必要がある
d=str.slice(0,c); //strの0番からc-1番までを抜出し変数dに代入
//文字列dの中に1から9の任意の値がなければnullが帰ってくる
//strは少なくとも12.jpgではないと言えるので
if((d.match(/[1-9]/g))==null)
{
alert("12.jpgの候補だ");
}else{
alert("12.jpgではない");
}
}
こんな感じで絞り込めました。
後は、imgとかの違いや、0の数での違いをどう処理するかかなと
思いますが、、
0255デフォルトの名無しさん
2010/06/06(日) 14:18:33誤//strは少なくとも12.jpgではないと言えるので
正//strは少なくとも複数の0と12.jpgからなる文字列だといえるので
0256デフォルトの名無しさん
2010/06/06(日) 15:07:04n=Number("IMG00000012.jpg".match(/\d+/)[0]);
alert(n);
で検証しました。確かに12ですね。
\d+:任意の数値の1回以上の表現
これで、00000012が配列として抽出される
で、問題は[0]ですが、
これは、もしかして配列の0番ということですか?
こんな使い方が出来るとは知りませんでした。
この手法だと、直接値を比較できますね。
ありがとうございました!!
0257デフォルトの名無しさん
2010/06/06(日) 15:50:34https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/match
>正規表現が g フラグを含んでいない場合、regexp.exec(string) と同じ結果を返します。
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/RegExp/exec
>[0] 最後にマッチした文字
配列じゃなくてプロパティ
厳密には配列もプロパティの集まり
つーかjsスレ(ry
0258デフォルトの名無しさん
2010/06/06(日) 16:42:14すみませんでした(平謝り)
上記リファレンス、頭から読み直します。
ありがとうございました。
0259デフォルトの名無しさん
2010/06/11(金) 23:05:13●正規表現の使用環境 - Mery(エディタ、鬼車ライブラリ)
●説明 - 連続する同じ内容の2行にマッチ、3行以上の部分にはマッチさせない
●対象データ
ABCD
ABCD
EFGH
EFGH
EFGH
●希望する結果
ABCDの2行のみマッチ、EFGHの2行のところ(2箇所)はスルーして欲しい。
---
否定先読みと否定戻り読みを同時に使ってみたところ、
たぶん否定戻り読みの\1の参照が変なため上手くいきませんでした。こんな感じ。
(?<!\1)(^.+\n)\1\1(?!\1)
0260259
2010/06/11(金) 23:08:36すみません。例では「\1」が1個多すぎました。
× (?<!\1)(^.+\n)\1\1(?!\1)
○ (?<!\1)(^.+\n)\1(?!\1)
…どっちみちダメな例ですが、いちおう。。
0261デフォルトの名無しさん
2010/06/12(土) 04:20:30鬼車では>>259の問題は解けないと思う。
こういう前方からの参照ができる正規表現エンジンってあるの?
0262デフォルトの名無しさん
2010/06/12(土) 10:25:24どうか俺もわからん)けど、そういう行を抽出したいだけなら前の1行も
マッチさせてしまえばいいんじゃね?
$str = <<__STR__;
ABCD
ABCD
EFGH
EFGH
EFGH
__STR__
$re = qr{
(?:
¥A
|
(^.+¥n)
(?!¥1)
)
(
(^.+¥n)
¥3
)
(?!¥3)
}xsm;
while ($str =~ /$re/g) {
print "<<<¥n$2>>>¥n"
}
0263259
2010/06/12(土) 13:32:11どうもありがとう! それで上手くいきました。
が、便乗ですみませんが、よろしければもう1つ質問させてもらえますか。
>>262の非捕獲式集合 "(?:)" を消そうと思うと上手くいきません。
"(?:)" を"()" に変え、 後方参照が1つ増えたので、"\3" を "\4" に変えると
同じものになるはずだと思うのですが。。
○ (?:\A|(^.+\n)(?!\1))((^.+\n)\3)(?!\3)
× (\A|(^.+\n)(?!\1))((^.+\n)\4)(?!\4)
0264259
2010/06/12(土) 13:43:31cf.
無理矢理ほんの少しだけ見やすくしてみました。
○ --- (?: \A|(^.+\n)(?!\1) ) ( (^.+\n)\3 ) (?!\3)
× --- ( \A|(^.+\n)(?!\1) ) ( (^.+\n)\4 ) (?!\4)
0265デフォルトの名無しさん
2010/06/12(土) 14:03:180267デフォルトの名無しさん
2010/06/13(日) 09:25:15というのを試してみたら可変長戻り読みでエラーになっちゃった。
これ戻り読みするときには¥2は確定してるんだからなんとかならん
のかなぁ。
0268デフォルトの名無しさん
2010/06/17(木) 03:14:38/aaa/ ・ /aaa bbb/ と2回やるのと、/aaa( bbb)[0,1]/ とまとめるのでは、
一般的に言ってどっちが速い・軽い・負担少ないの?
対象データとの兼ね合いもあるだろうが、どっちの方が好ましいの?
0269デフォルトの名無しさん
2010/06/17(木) 03:18:1210万回くらい回すテストプログラム作ってみたらいいと思う。
あと、/aaa( bbb)[0,1]/じゃなくて/aaa( bbb){0,1}/ね。
もっと言うと/aaa( bbb)?/の方が簡潔。
0270デフォルトの名無しさん
2010/06/17(木) 03:19:36×: /aaa( bbb)[0,1]/
○: /aaa( bbb){0,1}/
0271デフォルトの名無しさん
2010/06/17(木) 03:21:17>/aaa( bbb)?/
なるほど!
0272デフォルトの名無しさん
2010/06/19(土) 15:08:05use utf8;
use encoding "cp932";
use encoding 'euc-jp';
use encoding "iso-8859-2";
などの文にマッチして、「utf8」「cp932」「euc-jp」「iso-8859-2」の部分のみ取り出したいのですが
一発でできる方法があったら教えてください。
0273デフォルトの名無しさん
2010/06/19(土) 15:11:49アルファベット+数値.jpgのパターンはうまく認識するコードができました。
ただ新たな問題も発生しました。以下のようなパターンです。
日本語の文字化けと、スペースがあるパターンでは、数値を正確に拾えませ
んでした。
画像_000012.pg
%E7%94%BB%E5%83%8F_000012.jpg
画像 000012.jpg
%E7%94%BB%E5%83%8F%20000012.jpg
画像 000012.jpg
%E7%94%BB%E5%83%8F%E3%80%80000012.jpg
文字化け部分を無視して、数字の部分だけを検出する方法を得たいのですが
どうしたらよいでしょうか?
日本語とスペースの部分は(%..)*と、まとめられますが
これを除いた数値部分\d+だけをマッチの対象としたい場合
以下の表現でよいでしょうか?
(?:(%..)*)\d+
0274デフォルトの名無しさん
2010/06/19(土) 15:19:55| を使えばまあ1つにはできるだろうけど
0275デフォルトの名無しさん
2010/06/19(土) 21:03:30^use\s+(encoding\s+)(?(1)["']|)(.*?)\2;$
こうですか?分かりません><
0276デフォルトの名無しさん
2010/06/23(水) 05:14:30秀丸 または AHK
●検索か置換か?
検索 / grep
●説明
テキストファイルを複数キーワードで検索したい
(通常のウェブ検索のようなものを正規表現で行いたい)
●対象データ
text1 [tag1][tag2]
text2 [tag2][tag1]
text3 [tag2]
text4 [tag3][tag1]
text5 [tag3]
text5 [tag1][tag3][tag2]
●希望する結果
[tag1] および [tag2] で検索した場合、以下がヒット
text1 [tag1][tag2]
text2 [tag2][tag1]
text5 [tag1][tag3][tag2]
0278デフォルトの名無しさん
2010/06/23(水) 09:06:030279デフォルトの名無しさん
2010/06/23(水) 09:50:32>>276
(?=.*\[tag1\])(?=.*\[tag2\])
ただ秀丸の正規表現が先読みに対応してないと動かない
0280デフォルトの名無しさん
2010/06/25(金) 00:09:27ありがとうございます。試してみたところ、秀丸では動きませんでした。
先読みには対応しているようなので、何か別の工夫がいるのかもしれません。
秀丸スレで質問してみます。
0282デフォルトの名無しさん
2010/06/25(金) 17:47:50(?=.*\[tag1\])(?=.*\[tag2\])
でも
^(?=.*\[tag1\])(?=.*\[tag2\])
で動いたぞ。ただ、実際に0文字にマッチしているので、
範囲としては見えない。分かりやすいのがよければこれだな:
^(?=.*\[tag1\])(?=.*\[tag2\]).*
0283デフォルトの名無しさん
2010/06/27(日) 22:26:13VBScript
●検索か置換か?
置換
●全角英数字を全て半角英数字にしたい
1文字1文字Case文でそれぞれを置換するしか方法ないですかね?
0284デフォルトの名無しさん
2010/06/28(月) 18:11:550285デフォルトの名無しさん
2010/06/28(月) 18:17:06あと死んでください。
Excel VBA 質問スレ Part15
http://pc12.2ch.net/test/read.cgi/tech/1271261239/692
0286デフォルトの名無しさん
2010/06/29(火) 19:29:23Perl
●検索か置換か?
置換
●説明
文章の全部のurlを下記のように”&”のあとを削除したい
●対象データ
ttp:\\www.example.com\c?ro=1&act=rss&output=no
......
●希望する結果
ttp:\\www.example.com\c?ro=1
......
0287デフォルトの名無しさん
2010/06/29(火) 20:53:290288デフォルトの名無しさん
2010/06/29(火) 21:04:220289デフォルトの名無しさん
2010/06/30(水) 12:21:22\fで区切ってたんだけど、要素が10以上になるとうまく指定できない……
0290デフォルトの名無しさん
2010/07/01(木) 18:35:230291デフォルトの名無しさん
2010/07/04(日) 23:25:25JavaScript
●検索か置換か?
置換
●説明
「サーバー」を「サーバ」に置換したい
「サーバーサイド」「サーバー設定」は除外したい
●対象データ
つまりサーバーのあれこれ
しかしサーバーサイドのなんたら
なお、サーバー設定は云々
●希望する結果
つまり、サーバのあれこれ
しかしサーバーサイドのなんたら
なお、サーバー設定は云々
0292デフォルトの名無しさん
2010/07/04(日) 23:59:32.replace(/サーバー(?!(サイド|設定))/g,"サーバ")
0293デフォルトの名無しさん
2010/07/05(月) 08:15:02そうです。ありがとうございました!
梟で勉強します!
0294デフォルトの名無しさん
2010/07/05(月) 14:04:370295デフォルトの名無しさん
2010/07/05(月) 15:59:11こういう皮肉を言う人間にはなりたくないな。
0296デフォルトの名無しさん
2010/07/05(月) 16:37:34おれも >>291 にはクックブックの方がいいと思うけど。
0297デフォルトの名無しさん
2010/07/05(月) 18:12:56このスレの質問は、初心者ばかりだから、梟じゃわけわからんことが多いだろう。
0298293
2010/07/05(月) 19:29:54梟本は持ってるんですが、確かに難解で中々身についてる感じがしないです
専門書と言うか辞書を読んでる感覚で頭で分かったつもりになるだけと言うか…
料理本、よろしければURLか正式タイトル教えて頂けませんか?
0299デフォルトの名無しさん
2010/07/05(月) 20:09:02http://www.oreilly.co.jp/books/9784873114507/
いろんな実例が載ってるから便利でいいと思うよ。
0300298
2010/07/05(月) 20:53:05買いました!
これのが易しそうですね
ありがとうございます
皆さんはハンドブックやクイックリファレンスみたいなの持ってますか?
0301デフォルトの名無しさん
2010/07/05(月) 22:33:53料理本も他人に推奨しながらまだ買ってないし、梟も2版だけどね。
3版で2版にない良いところがあったら教えてほしいとこr。
0302デフォルトの名無しさん
2010/07/05(月) 22:37:51難解とかいう以前に読んでないんだろう
0303デフォルトの名無しさん
2010/07/06(火) 23:49:53●正規表現の使用環境
JavaScript
●検索か置換か?
置換
●説明
「チョコレート」を「チョコ」に置換したいです
でも「板チョコレート」「バレンタインチョコレート」はヒット(置換)させたくないです
●対象データ
やはり板チョコレートよりも
バレンタインチョコレートよりも
自分で買うチョコレート!
●希望する結果
やはり板チョコレートよりも
バレンタインチョコレートよりも
自分で買うチョコ!
(!(バレンタインチョコレート|板チョコレート)チョコレート),チョコ/g
…ダメです。やっぱ難しいです。
0304デフォルトの名無しさん
2010/07/07(水) 00:04:270305276
2010/07/07(水) 00:36:58>>282 さんがおっしゃる通りでした。0 文字マッチで動いてたんですね。
結局最後のものを使わせていただきました。
ありがとうございました。
0306303
2010/07/07(水) 12:28:01上手くいきません
「<」って、どう言う意味なんですか?
0307デフォルトの名無しさん
2010/07/07(水) 13:14:470308デフォルトの名無しさん
2010/07/07(水) 14:08:25JavaScriptは戻り読み使えないのか。ごめん
(?<!...) で否定の戻り読み。「左に"板"も"バレンタイン"もない"チョコレート"」って意味
これならどうだろ
var s = "やはり板チョコレートよりも\nバレンタインチョコレートよりも\n自分で買うチョコレート!";
s..replace(/(板|バレンタイン)?チョコレート/g, function(str, p0){ return p0 ? str : 'チョコ'});
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Guide/Regular_Expressions
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/replace
0309デフォルトの名無しさん
2010/07/07(水) 17:39:20それぞれひとつひとつを全て検索対象にする
(連続したものをひとまとまりとして扱うのではなく。そして文中のスペースは対象にしない)
には、どう書けばいいですか?
0310デフォルトの名無しさん
2010/07/07(水) 18:33:140311デフォルトの名無しさん
2010/07/07(水) 18:46:200312309
2010/07/07(水) 19:30:22でも実際自己解決しました
解決って、その通りのことができたわけじゃないんだけど
やろうとした目的は果たせたんで、おkとします
>>310さん、せっかくすばらしい人間性を披露してくださったのに
あなたがワクワク期待してたような反応してあげられなくて、ごめんなさい
0313デフォルトの名無しさん
2010/07/07(水) 19:34:210314デフォルトの名無しさん
2010/07/08(木) 09:42:56動かないっす(;´Д`)
ブラウザはFF
JavaScriptに限らずVBscriptでも動けばいいと思ったんですが
厳しそうですね…
これって、やろうとしてる事は前方参照否定になるんですかね?
0315デフォルトの名無しさん
2010/07/08(木) 13:16:00x s..replace
o s.replace
0316デフォルトの名無しさん
2010/07/08(木) 17:54:33PHP5
●検索か置換か?
検索
●説明
[[ と ]] に囲まれた文字列を配列で取得したい
●対象データ
[[hare]][[ame]][[kumori]][[yuki]][[]][[kaminari]][[taifuu]]
●希望する結果
matches[0] = hare
matches[1] = ame
matches[2] = kumori
matches[3] = yuki
matches[4] =
matches[5] = kaminari
matches[6] = taifuu
よろしくお願いします。
0317デフォルトの名無しさん
2010/07/09(金) 07:36:38これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいにパンピーは知らなくても無問題でしょうか?
0318314
2010/07/09(金) 08:25:23ありがとう!
でも正規表現だけだと、無理って事?
>>317
君は知る必要ないね
一般事務職でも使うケースはあるけど
ワイルドカードだけ取り敢えず覚えておいては?
と、正規表現初心者の俺が(ry
0319デフォルトの名無しさん
2010/07/09(金) 10:43:04ワイルドカード(*、?だけですけど)の使い方は分かってます。
0320デフォルトの名無しさん
2010/07/09(金) 11:22:26出会ってもないのに知る必要はないと思う。
0321デフォルトの名無しさん
2010/07/09(金) 15:36:10怖いお兄さん(お姉さんも可)に怒られるからよい子は注意な
0322デフォルトの名無しさん
2010/07/09(金) 18:26:02ここで正規表現って騒いでるやつも知らないから。
その証拠にワイルドカードぐらいしか言えないだろ?w
0323デフォルトの名無しさん
2010/07/09(金) 20:39:020324名無しさん@そうだ選挙に行こう
2010/07/10(土) 09:01:52これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいにパンピーは知らなくても無問題でしょうか?
0325名無しさん@そうだ選挙に行こう
2010/07/10(土) 09:03:32これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいにパンピーは知らなくても無問題でしょうか?
0326名無しさん@そうだ選挙に行こう
2010/07/10(土) 18:51:05これってどんな人がどんな時に使うんでしょうか?
ぐぐって調べてもイマイチ意味が分かりませんし
いったいどんな人が使ってるのか疑問です。
自分みたいに頭がクラウドな香具師は知らなくても無問題でしょうか?
0327名無しさん@そうだ選挙に行こう
2010/07/10(土) 20:53:00っつーかスレ違い
0328名無しさん@そうだ選挙に行こう
2010/07/10(土) 21:49:10モバイル アプリケーションまで対応できる高い信頼性を備えた
アプリケーションを構築することができます。
正規表現で企業内に存在する多数のデータを統合し、全社員がデータを活用できる
ビジネス インテリジェンス基盤として堅牢で実績のあるハイパーバイザーを構築し
不要なリスクやオーバヘッドを回避できます。
正規表現の仮想インフラストラクチャ機構にはデータを安定して管理するさまざまな機能はもちろん、
データを活用・分析する機能まで、すべての機能がオールインワンで備わっているます。
高いスケーラビリティとバランスのとれたトータルクオリティーを活用することにより
あなたの快適ライフをサポートします。
0329名無しさん@そうだ選挙に行こう
2010/07/10(土) 21:58:550330名無しさん@そうだ選挙に行こう
2010/07/11(日) 09:29:54ユーのランゲージはファンタスティックね
0331名無しさん@そうだ選挙に行こう
2010/07/11(日) 10:15:520332デフォルトの名無しさん
2010/07/14(水) 22:16:49vb.net
●したいこと
3文字以上の繰り返し表現を抽出
●サンプル
例文1)死にたい死にたい死にたい死にたい死にたい
結果1)死にたい
例文2)筋肉バスターと阿修羅バスター
結果2)バスター
ってのを正規表現でやるのは無理でしょうか・・・
0333デフォルトの名無しさん
2010/07/15(木) 00:06:01こういうときはどういう結果になって欲しいの
処理系側に頼るにしてもあんまりロジック考えたくない
0334デフォルトの名無しさん
2010/07/15(木) 00:54:48英語ならともかく日本語じゃ無理じゃないか
形態素解析 単語 頻度 なんかでぐぐるといいかも
0335デフォルトの名無しさん
2010/07/15(木) 03:49:25> 阿修羅像と筋肉バスターと阿修羅バスターとジェットコースター
「阿修羅」
「バスターと」
じゃね?
0336デフォルトの名無しさん
2010/07/15(木) 04:52:360337デフォルトの名無しさん
2010/07/15(木) 07:44:510338デフォルトの名無しさん
2010/07/15(木) 08:16:330339デフォルトの名無しさん
2010/07/15(木) 09:16:170340デフォルトの名無しさん
2010/07/17(土) 10:14:07phpならsplit("\]\]\[\[", str)で配列に分割して
最初と最後の要素から"[["と"]]"を取り除いた方が早いんじゃない?
正規表現にこだわる理由は何だろう
>>339
処理結果:特定アジア
0341デフォルトの名無しさん
2010/07/17(土) 10:53:38できれば「文字列を左から走査していき「[[ と ]] に囲まれた文字列」を
すべて拾い上げる」ように書きたいところ
というわけで preg_match_all に "\[\[(.*?)\]\]" を渡すとかどうだろ
PHP知らないんで適当だが
0342デフォルトの名無しさん
2010/07/17(土) 12:05:18ありがとうございます。
実際には
[[hoge]]今日は[[fuga]]いい[[tenk]]天気です
みたいに間に文字は入るので、正規表現でしか出来ない(効率の面で)と判断しました。
この中のhoge、fuga、tenkiのみを配列の中に入れたかったのです。
結局preg_match_allで "/\[{2}[0-9A-Za-z]*\]{2}/"とする事で解決しました。
0343デフォルトの名無しさん
2010/07/18(日) 02:24:03「スター」は抽出しないのか?
0344デフォルトの名無しさん
2010/07/18(日) 02:30:15それを抽出するなら「スターと」「ターと」も必要じゃないか?
0345デフォルトの名無しさん
2010/07/18(日) 02:38:400346デフォルトの名無しさん
2010/07/26(月) 18:08:06コメント
**/
// コメント
上記のコメント箇所で、コメント内の各一文字を「_」に置き換える方法はあるでしょうか?
コメント行を削除せずに、一度コメントを省いてからソース検索をしたいと思っておりまして。
____↓
_____↓
____↓
_______↓
0347デフォルトの名無しさん
2010/07/26(月) 18:12:000348デフォルトの名無しさん
2010/07/26(月) 18:15:53コメントかどうか判断がつきにくい文字列リテラルとか
あるんで病的なケースに完全に対応するのは難しい。
多少誤爆があってよければ適当にやりゃできるだろ。
正規表現といっても使い方はエディタや言語によって
違うので何を使ってやりたいかを決めてそっちのスレで
聞いたほうがいいかも。
0349デフォルトの名無しさん
2010/07/26(月) 18:16:18while ((c=getchar()) != EOF) {
if (c == '/') {
c = getchar();
if (c == '/') {
putchar('_');putchar('_');
while (c=getchar()) != '\n') putchar('_');
} else if (c == '*') {
LOOP:
putchar('_');putchar('_');
while (c=getchar()) != '*') putchar('_');
if ((c=getchar()) != '/') goto LOOP;
putchar('_');
}
}
putchar(c);
}
0350デフォルトの名無しさん
2010/07/26(月) 19:09:53ありがとうございます。
正規表現だけではできないですかね…
0351デフォルトの名無しさん
2010/07/26(月) 19:15:360352デフォルトの名無しさん
2010/07/27(火) 10:00:25あ、すみません。
正規表現とリプレイスの組み合わせでできないですかね?
以前どこかのサイトで見かけたことがあったのですが、
場所忘れ&これを実現した正規表現だったか覚えていなくて…
0353デフォルトの名無しさん
2010/07/27(火) 11:45:54これだと1コメントで「_」になってしまいます。
コメントが10文字ある場合は「_」も10個ほしいです。
先読み、戻り読みを駆使してうまくやっていたような気がしたんですが、
すみません、思い出せないです。
0354デフォルトの名無しさん
2010/07/27(火) 12:01:280355デフォルトの名無しさん
2010/07/27(火) 12:09:56思うんだけどね。不必要に問題を複雑にしてるような。
0356デフォルトの名無しさん
2010/07/27(火) 14:23:36a // b で
a ____ になると思ったが
______ になってしまう
なぜ\Gが行頭に引っかかるのだ!
ちなみにjavaです
0357デフォルトの名無しさん
2010/07/27(火) 19:15:520358デフォルトの名無しさん
2010/08/02(月) 11:52:25「コメントを省いてからソース検索」するのが目的なのに
「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない
他に目的があるのなら全部書き出して最終的に何がしたいか明示すべき
0359デフォルトの名無しさん
2010/08/02(月) 13:23:24そうですねf^^;
やりたいことはソース中の文字列で日本語コメントを抽出です。
その際、検索結果の行番号を元のソースに合わせたいです。
複数行コメントをカットしてしまうとずれが生じるので、全てスペース(改行は変換せず)を考えています。
かなり前にこのスレッドで答えをもらったと思うのですが、それを忘れてしまいまして
0360デフォルトの名無しさん
2010/08/02(月) 17:24:38> その際、検索結果の行番号を元のソースに合わせたいです。
「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない
0361デフォルトの名無しさん
2010/08/03(火) 15:50:500362デフォルトの名無しさん
2010/08/03(火) 17:33:470363デフォルトの名無しさん
2010/08/03(火) 17:40:10わからんのなら、おとなしくすっこんでろよw
仕様は>>346で明確に示してあるだろ。これ読んでもわからんの?
わかる人が答える。わからない人は指をくわえて黙って見ている。
これが掲示板の作法だろ。
0364デフォルトの名無しさん
2010/08/03(火) 17:45:16行番号を維持するだけでなく桁数/文字数も維持したいのだろう
0365デフォルトの名無しさん
2010/08/03(火) 20:10:420366デフォルトの名無しさん
2010/08/03(火) 20:47:16ないぐらいは仮定しないととんでもなく難しい気がするな。
あとこういうのを間違わずにやろうとすると結構大変。
// hogehoge /* hogehoge
/* hogehoge
// hogehoge */ hogehoge
0367デフォルトの名無しさん
2010/08/04(水) 07:41:17むしろ自分が何をしたいのかさえ自分で理解できていないレベル
0368デフォルトの名無しさん
2010/08/04(水) 07:48:43コメントについてはネストしたものを正規表現だけで取り扱うのは不可能と
「詳説 正規表現」に書いてあるけどな
その例はネストしていないけど
0369デフォルトの名無しさん
2010/08/04(水) 11:49:47そんなもん複数行モードで(/\*.*?\*/|//.*$)だろ…
ここで質問した俺が馬鹿だった
それじゃ一生答えが導けないよ
0370デフォルトの名無しさん
2010/08/04(水) 11:56:56こういうのをなんとかするのは普通の正規表現の範囲では無理。
0371デフォルトの名無しさん
2010/08/04(水) 12:02:01例えば something を検索したいとすると
some\nthing、so\nmething, someth\ning などもマッチした、と判定したいんです。
今はこんな感じで処理しています。
「改行の位置を記憶→改行を全削除→文字列のマッチ→改行をもう一度挿入」
これが正規表現でできると楽になるので方法がわかる方いたらどうか教えてください。
使っている言語はJAVAですが、
他の言語の正規表現でもできるかどうか教えてもらえると助かります。
0372デフォルトの名無しさん
2010/08/04(水) 12:38:56それで適当な固定文字列に置き換えるだけなら簡単なんだけど
文字数を保存して間を_にしたいとかいうから面倒なわけです。
perlならeval使えるから加工するプログラム書けば一発ですが、ただの
エディタの置換機能だとそうもいかん場合も多いんじゃねーの? 何を
使ってるのかも示されてないのでなんともいえんけどさ。
$str = qq{
// hogehoge /* hogehoge
/* hogehoge
// hogehoge */ hogehoge
};
$str =~ s%(/\*(.*?)\*/)|(//([^\n]*))%($1 ne '')? ('/*'.to_underscore($2).'*/'): ('//'.to_underscore($4))%gse;
print $str;
sub to_underscore {
my($s) = @_;
$s =~ s/\S/_/g;
return $s;
}
0373デフォルトの名無しさん
2010/08/05(木) 07:56:23要求仕様を先に確認しろ
>>371
処理系のよっては改行文字を無視するモードがある
Javaはどうだったかな
0374デフォルトの名無しさん
2010/08/05(木) 09:10:16perlなら
undef $/
だったかな
0375デフォルトの名無しさん
2010/08/05(木) 09:17:10s\n?o\n?m\n?e\n?t\n?h\n?i\n?n\n?g
0376デフォルトの名無しさん
2010/08/05(木) 10:42:500377デフォルトの名無しさん
2010/08/10(火) 22:29:01/(?<=.*_number=)\d*/のような感じでやりたいのですが・・・
0378デフォルトの名無しさん
2010/08/10(火) 23:25:35やって見りゃVariable length lookbehind not implementedになるのはすぐわかるだろ。
この例だと.*は余計なので取り除いて /(?<=_number=)¥d*/ にすればいいと思うが。
0379デフォルトの名無しさん
2010/08/11(水) 06:32:21ありがとうございます、できないんですね・・・
では、/(?<=x_.*_number=)\d*/のように書きたい場合は他に書き方はあるでしょうか?
0380デフォルトの名無しさん
2010/08/11(水) 07:10:06/(x_.*_number=)(\d*)/
みたいにすれば?
0381デフォルトの名無しさん
2010/08/11(水) 07:17:20ありがとうございます。
\d*を見つけるだけでなく、$&に取り出したいです。
0382デフォルトの名無しさん
2010/08/11(水) 08:39:22perl -e '"x_hoge_number=100"=~/x_.*_number=¥K¥d*/ and print $&'
0383デフォルトの名無しさん
2010/08/11(水) 13:52:06/x_.*_number=(\d*)/
で$1見るのが楽チンな気がするんだけど。
0384デフォルトの名無しさん
2010/08/11(水) 20:18:38>>383
数字だけ取り出せれば良かったので$1を使うことにしました。
ありがとうございました。
0385デフォルトの名無しさん
2010/08/13(金) 17:59:53.net Framework 2.0 - 3.5 (C#)
●検索か置換か?
検索
●説明
artist, titleの各グループの文字列を取得したい
●対象データ
Artist - Title
●希望する結果
artist = Artist
title = Title
よろしくおねがいします。
0386デフォルトの名無しさん
2010/08/13(金) 18:44:28ずぶの素人なので、どこのサイトで勉強したら良いのか分りません。
0387デフォルトの名無しさん
2010/08/13(金) 18:55:38適当に入力して試してたら数分で理解できるよ
0388デフォルトの名無しさん
2010/08/13(金) 19:12:44適当厨ww
0389デフォルトの名無しさん
2010/08/13(金) 19:16:28http://funcchan.blog16.fc2.com/
>>385
こういうこと?
違ってるならもっと具体的な入力データとほしい結果の例を挙げて
using System.Text.RegularExpressions;
...
string[] words = Regex.Split("Artist - Title", " - ");
string artist = words[0];
string title = words[1];
0390デフォルトの名無しさん
2010/08/13(金) 21:04:02Artist, Album, Titleが含まれている文字列からそれらを正規表現で抽出したいです。
例えば
山田耕筰 - 赤とんぼ
を
(?<artist>.*?) - (?<title>.*?)
みたいな感じで。
元の文字列がどういう形式か不定なので、Splitはあまり使いたくないのですが・・・
0391デフォルトの名無しさん
2010/08/13(金) 21:18:420392デフォルトの名無しさん
2010/08/13(金) 21:44:27それぐらいは保証されてると思って>>389を書いた
自分だったら " - " が文字列に2つ以上入ってたら不正な入力として受け付けないか
許される状況であれば脇によけておいて後で手作業で処理するよ
0393デフォルトの名無しさん
2010/08/13(金) 21:44:49とりあえず
(?<artist>.*) - (?<title>.*?)
にしたところ希望の動作は得られましたが、
Artist - Title
そのものがグループ(グループ名なし)として抽出されています。
これは解決できますか?
0394デフォルトの名無しさん
2010/08/13(金) 21:47:020395デフォルトの名無しさん
2010/08/13(金) 21:47:190396デフォルトの名無しさん
2010/08/13(金) 21:47:59解決って何よ
希望の動作したならそれで十分でしょ
0397デフォルトの名無しさん
2010/08/13(金) 21:52:21おっしゃる通りなんですけど、なんか気になるので。
>>394
一応ソースです。
//source = "山田耕筰 - 赤とんぼ"
//expression = "(?<artist>.*) - (?<title>.*?)"
Match match = expression.Match(source);
Group group;
group = match.Groups["artist"];
if (group == null)
{
artist = string.Empty;
}
else
{
artist = group.Value;
}
・・・
以下Groups["title"]、Groups["album"]について同様
0398デフォルトの名無しさん
2010/08/13(金) 22:03:03全体へのマッチはグループ指定してないからグループ名なしのマッチでいいじゃん
0399デフォルトの名無しさん
2010/08/13(金) 22:26:130400デフォルトの名無しさん
2010/08/13(金) 22:41:39ttp://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.groupcollection%28v=VS.95%29.aspx
> このコレクションには、1 つ以上の System.Text.RegularExpressions.Group
> オブジェクトが格納されています。一致が成功した場合、コレクションの
> 1 つ目の要素には、一致した文字列全体に対応する文字列が含まれます。
あと>>397の正規表現だと (?<title>.*?) は空文字列にマッチしてないかな
0401デフォルトの名無しさん
2010/08/13(金) 23:03:41なるほど、仕様なのですね。
確かに(?<title>.*?) は該当箇所が空の場合でもマッチしてます。
該当箇所が空の場合マッチさせないようにするには
(?<artist>.*) - (?<title>.*)
とすればOKでしょうか?
0402デフォルトの名無しさん
2010/08/13(金) 23:07:290403デフォルトの名無しさん
2010/08/13(金) 23:26:07(?<artist>.+) - (?<title>.+)
にしたらマッチしなくなりました。
動作上はこれで問題ありませんので、これにしようと思います。
今回は大変勉強になりました。
>>389-402のみなさん、ありがとうございました。
0404デフォルトの名無しさん
2010/08/14(土) 06:50:19私は、HTMLでホームページを作ったのですが、
titleタグをちゃんといれて作ったのですが
h1タグを入れるのを忘れてしまっていました。
そこで、各ページのh1タグに、それぞれのtitleタグと同じものを入れたいのですが
ホームページのページ数が1000以上なので、
多過ぎて大変です。
そこで、正規表現をつかって、うまく対処する方法を教えてください。
0405デフォルトの名無しさん
2010/08/14(土) 06:59:320406デフォルトの名無しさん
2010/08/14(土) 09:06:17<title>(.*?)</title> で title のテキストを検索
あとは <body> を検索して <body><h1>$1</h1> に置換
わけわかんなかったら親切な人がスクリプト貼ってくれるのを祈る
0407デフォルトの名無しさん
2010/08/14(土) 11:43:08$path = "./";
$ext = ".html";
$insert_point = "<div class=\"hoge\">";
$d = dir($path);
while($f = $d->read()){
if(strpos($f,$ext) === FALSE)
continue;
$txt = file_get_contents($f);
if(preg_match('/<title>(.*)<\/title>/', $txt,$hits)){
$txt = str_replace($insert_point,"$insert_point\n<h1>$hits[1]</h1>",$txt);
if(!$fp = fopen($f,"w"))
continue;
fputs($fp,$txt);
fclose($fp);
}
}
?>
0408デフォルトの名無しさん
2010/08/15(日) 14:26:57現在、改行コードを含めた任意の文字列を"[\s\S]*"としているのですが
ブラケット中の最初の文字がマッチした場合、それ以降は評価しないとしたら
一般的な文章では"\s"よりも"\S"にマッチする文字の方が多いことを考えて
この場合"[\S\s]*"と直した方が速度は上がると考えて良いのでしょうか?
よろしくお願いします。
0409デフォルトの名無しさん
2010/08/15(日) 15:12:350410408
2010/08/15(日) 15:18:56他で質問してみます。どうもありがとうございました。
0411デフォルトの名無しさん
2010/08/16(月) 09:20:33正規表現エンジンの動作を理解した方が早道
0412デフォルトの名無しさん
2010/08/24(火) 14:01:49サクラエディタ
●検索か置換か?
検索
●説明
下記の条件で色分けのための選択をしたい
●対象データ
99999ACB コメント;以降構文
●希望する結果
行頭から10文字は半角数字もしくは文字
11と12は半角スペース
以降コメント(任意文字列)のあとにセミコロン
13桁目からセミコロンまでを指定したい。
(?<=.{13}).*;
かと思ったんだけどダメでした。
どう書けば良いんでしょうか…。
0413デフォルトの名無しさん
2010/08/24(火) 15:02:31(?<=.{12}).*?;
0414デフォルトの名無しさん
2010/08/24(火) 15:11:05たださっきまで適当に試行錯誤していて何故か
(?<=.{12}).*(?<=;)
でも出来ました。
いまいち意味を理解できずにできてしまったんですが
?; は最短マッチで一番早い;までという意味ですよね。
(?<=)
は検索しても全然わからないんですがマッチした文字より後ろ、という意味であってますか?
(?<=.{12}).*(?<=;)
だと12文字より後ろから何文字でも、のあとどういう意味になるんでしょう。
0415デフォルトの名無しさん
2010/08/24(火) 19:39:31最短マッチなら+?;や*?;
あと、(?<=)というか先読み・後読みは文字ではなく「場所にマッチ」
(?<=.{12}).*(?<=;)
→任意の文字12個の直後の場所から最後の";"の直後の場所に挟まれた
任意の文字の0個以上の繰り返しにマッチする
例1)^はそれぞれの(?<=)でマッチする「場所」(実際は文字幅0)
123456789abcdefghijkl;mnop;qrst(対象)
↓ (?<=.{12}).*(?<=;)
123456789abc^defghijkl;mnop;^qrst → defghijkl;mnop;(マッチ結果)
例2)上の*を*?に変更しただけ
123456789abcdefghijkl;mnop;qrst(対象)
↓ (?<=.{12}).*?(?<=;)
123456789abc^defghijkl;^mnop;qrst → defghijkl;(マッチ結果)
0416デフォルトの名無しさん
2010/08/25(水) 11:08:54ありがとうございます!
0417デフォルトの名無しさん
2010/08/31(火) 00:21:19秀丸 8.0.2 b5
●検索か置換か?
検索
●説明
条件にマッチする行を指定数だけ抽出する
●対象データ
a hogehoge1
b hogehoge2
c hogehoge3
a hogehoge4
a hogehoge5
c hogehoge6
a hogehoge7
b hogehoge8
●希望する結果
"a " で始まる行を 3 つだけ表示させる
a hogehoge1
a hogehoge4
a hogehoge5
宜しくお願いします。
0418デフォルトの名無しさん
2010/09/06(月) 16:08:36例えば
前50文字が数字であれ半角スペースであれ全角スペースであれ漢字であれ
51桁目からを色分けしたい場合
(?<=.{50}).*$
では全角文字があった場合その分51桁目よりもっと後ろが色分けされますよね?
0419デフォルトの名無しさん
2010/09/06(月) 16:10:33やっぱりこっちにしようと思って文章修正し忘れしました。
●正規表現の使用環境
サクラエディタ
●検索か置換か?
検索
●説明
行の51ケタ目(51文字目ではない)からを色分けしたい
を付け加えて読んで下さい。
0420デフォルトの名無しさん
2010/09/06(月) 16:29:39並べれば原理的には可能だと思うけど、多分そんな大きな正規表現は扱えない
だろうなぁ。
0421デフォルトの名無しさん
2010/09/07(火) 00:12:24(?<=.{51}).+
0422デフォルトの名無しさん
2010/09/07(火) 00:13:54全半角を考慮しろってことね。
0423デフォルトの名無しさん
2010/09/07(火) 08:49:37420のような方法でやるしか思いつかないな。ちょうどn桁の文字列に
マッチする正規表現をR(n)としたとき、
R(0) = 空
R(1) = 半
R(2) = (全R(0)|半R(1))
R(3) = (全(R(1)|半R(2))
...
R(n) = (全R(n-2)|半R(n-1))
と作っていくことができるだろう。ただし半,全はそれぞれ半角、全角1文字を
表す文字クラス。
これフィボナッチ数と同じパターンだからR(n)は a^n ぐらいの長さには
なりそうだな。n=50だと相当でかい。
もっとうまい書き方はあるだろうか?
0424デフォルトの名無しさん
2010/09/07(火) 09:27:22って書いてからサクラエディタ限定質問であることに気付いた_/ ̄|○
0425デフォルトの名無しさん
2010/09/07(火) 09:46:47文字幅なんて概念はないんだから
0426デフォルトの名無しさん
2010/09/07(火) 10:58:29バイト数カウントみたいなものがもしあればと思って。
色々考えてもらってありがとうございます。
0427デフォルトの名無しさん
2010/09/07(火) 11:22:230428デフォルトの名無しさん
2010/09/07(火) 11:47:10(.*)$だと改行が含まれないとのことで・・
0429デフォルトの名無しさん
2010/09/07(火) 11:53:50「.」が改行含むかどうかって実装とかオプションで違うから何使ってるか
言わないとなんともいえんね。使ってる物の専用スレに行った方が
いいかもしれん。
0430デフォルトの名無しさん
2010/09/07(火) 12:08:16正規表現はどうすればいいんでしょうか。((.|\n)*)$こんな感じ?
専用スレ探してみます。
0431デフォルトの名無しさん
2010/09/07(火) 12:29:070432デフォルトの名無しさん
2010/09/07(火) 13:02:50ありがとうございます。そのようなスマートな方法を探してたんです。
0433デフォルトの名無しさん
2010/09/09(木) 08:05:34$a='a;b;c;'; $a=~s/.*?(;b|)//; print $a."\n";
$a='a;b;c;'; $a=~s/.*?(;b)//; print $a."\n";
$a='a;b;c;'; $a=~s/(.*?;b|)//; print $a."\n";
を実行すると、
a;b;c;
;c;
;c;
となりますが、何故最初の表現がこうなってしまうのか解りません
最短一致表現の直後に (〜|) がある場合、空の部分の方が先に処理されてしまうのでしょうか??
0434デフォルトの名無しさん
2010/09/09(木) 09:05:33| が解釈される順番が違う
1番目の表現は .*? を探した後に | の左にある ;b を探して、なければ右にある空文字列を探す
→.*?は文字数0でもマッチするので文字列先頭の空文字列にマッチ
3番目の表現は最初に | の左にある .*?;b を探して、なければ右にある空文字列を探す
→"a;b"にマッチ
自分が正規表現エンジンになったつもりで文字列の「最初から」マッチさせていくとわかりやすい
0435デフォルトの名無しさん
2010/09/09(木) 09:15:10.*?は文字数0でもマッチ → .*?は文字数0にもマッチ
0436433
2010/09/09(木) 15:07:36よく解りました。
0437デフォルトの名無しさん
2010/09/09(木) 18:46:36独自のタグ(<A#...#A>)が設定されたテキスト行から、このタグを取り除きたい。
テキスト行中にタグが複数出てくることもあり。
置換前 : あいうえお <A#かきくけこ#A> さしすせそ <A#たちつてと#A> なにぬねの
置換後 : あいうえお さしすせそ なにぬねの
どうやったらいいですかあああああボスケテーーー!!!
0438437
2010/09/09(木) 19:00:10結果 : あいうえお なにぬねの
イケるかと思ったらダメだったでござる。
gオプションを付けなかったら、左から一致した一個を置換だと思ってたのに…
0439デフォルトの名無しさん
2010/09/09(木) 19:03:040440437
2010/09/09(木) 19:15:04即答イカす!ありがとう!!
while(string.match(/<A#.*?#A>/) != null){ string = string.replace(/<A#.*?#A>/, ''); }
でとりあえずできた
string = string.replace(/<A#.*?#A>/, ''); の戻り値はtrue/falseじゃなくて置換後の文字列だったよ…
0441デフォルトの名無しさん
2010/09/09(木) 19:36:580442437
2010/09/09(木) 19:52:23?の使い方をイマイチよくわかってなかった
str = str.replace(/<a%.*?%a>/g, '')
こうですね!!!
0443デフォルトの名無しさん
2010/09/09(木) 22:43:170444デフォルトの名無しさん
2010/09/10(金) 04:00:58local test1 = 0 -- comment
例えば上記のluaコードであれば、 --.*\n で問題なく文末コメントを選択出来るのですが
local test2 = "A--B" -- comment
このように、文字列中にコメント記号が存在する場合は
文字列中のものはマッチさせず、文末コメントだけマッチさせるようにしたいのです。
どのように書けばよいのでしょうか?
0445デフォルトの名無しさん
2010/09/10(金) 04:26:02--[^"]*\n とかは?
local test2 = "A--B" -- "hoge"
とかは削除できんけど
0446デフォルトの名無しさん
2010/09/10(金) 09:05:24~s/(.*)--.*$/\1/
0447デフォルトの名無しさん
2010/09/10(金) 12:56:140448デフォルトの名無しさん
2010/09/10(金) 14:18:550449デフォルトの名無しさん
2010/09/10(金) 14:33:550450デフォルトの名無しさん
2010/09/10(金) 14:37:26ほんとありがとうございました。
0451デフォルトの名無しさん
2010/09/10(金) 14:44:31ヴァイオリンは?
0452デフォルトの名無しさん
2010/09/10(金) 14:52:420453デフォルトの名無しさん
2010/09/10(金) 15:24:380454デフォルトの名無しさん
2010/09/10(金) 15:27:41コード
コード
0455デフォルトの名無しさん
2010/09/10(金) 15:30:12判ってるなら代案だせよ馬鹿
0456デフォルトの名無しさん
2010/09/10(金) 15:34:29わからないとどうしようもないだろう。
俺も ヴァ〜 とか通らない例を書きたくなるし。
0457デフォルトの名無しさん
2010/09/10(金) 15:53:500458デフォルトの名無しさん
2010/09/10(金) 15:54:570459デフォルトの名無しさん
2010/09/10(金) 16:05:34そこらへんは>>447が勝手に追加するでしょ
vb.netわかんねーけど
if(str =~ /[^許可する文字列の集合]/){ エラー処理
とかでいいんじゃね
0460デフォルトの名無しさん
2010/09/10(金) 16:46:27というのはどう書けばいいでしょう。
^.{6}(X).{5}^( |Y).*$
かと思ったのですがダメでした。
0461デフォルトの名無しさん
2010/09/10(金) 16:56:19すみません。
0462デフォルトの名無しさん
2010/09/10(金) 17:01:140463デフォルトの名無しさん
2010/09/10(金) 17:04:530465デフォルトの名無しさん
2010/09/11(土) 06:25:18\sって処理系によっては改行含むんじゃなかったっけ?
0466デフォルトの名無しさん
2010/09/11(土) 09:27:270467デフォルトの名無しさん
2010/09/15(水) 00:29:49.net(C#3.0)
●検索か置換か?
検索
●説明
空白をデリミタとして、最初の文字列を取得したい
空白は半角全角両方あり、複数連続することもあり得る
ただし、()や[]で囲まれる文字列はスルー(空白として処理する)
正規表現一発で抜き出したいです
下記例の各行は全て「山田太郎」だけ抽出されるようにしたいです
山田太郎 39才
山田太郎 39才
(A社) 山田太郎 39才
(A社)山田太郎 39才
(A社 B課)山田太郎 39才
山田太郎(A社)39才
0468デフォルトの名無しさん
2010/09/15(水) 08:09:560469デフォルトの名無しさん
2010/09/15(水) 09:31:43正規表現では無理、というのは有名な話なわけだが。
0470デフォルトの名無しさん
2010/09/15(水) 10:46:17[A社]山田太郎(B課)39才
まで正しく扱えるようにするのは厄介。
0471デフォルトの名無しさん
2010/09/15(水) 11:04:080472デフォルトの名無しさん
2010/09/15(水) 11:20:360473デフォルトの名無しさん
2010/09/15(水) 11:24:39二発目三発目でなにが問題か
0474467
2010/09/15(水) 12:48:52そりゃ自分で分からんわけだ
>>473
「抜き出すための正規表現を入力」みたいなGUIだったので…
まぁ無理なら諦めます
0475デフォルトの名無しさん
2010/09/15(水) 14:36:56^([ ]|\(.*?\)|\[.*?\]|(.*?)|[.*?])*(.*?)[ \(\[([]
0476デフォルトの名無しさん
2010/09/15(水) 23:37:59・括弧は対応が取れている
・括弧は4種のみ(大小括弧、全半角)
という条件なら、さほど難しいお題ではないな
逆に言うと、この条件から外れるのであれば正規表現向きではないと
>>475
空白も括弧もなく末尾に達するのは考慮しなくても良いのかな
トークンの部分を ([^ \(\[([]*) とするのに一票
0477デフォルトの名無しさん
2010/09/16(木) 10:13:09半角英数字+半角カナ+半角の()
のみの入力であることを調べたいのですがうまくいきません。
([A-Za-z0-9アーン]|[゙゚]|)+
0478477
2010/09/16(木) 10:16:18改めて
C#2.0で正規表現を使用して
半角英数字+半角カナ+半角の()
のみの入力であることを調べたいのですがうまくいきません。
([A-Za-z0-9アーン]|[゙゚]|[\(\)])+
としても
半角の
タ
ハ
がマッチしてくれないようなのですが、なにがおかしいかわかりません。
お分かりになられるようでしたらお教え願えませんか?
テストに使用した文字は
アダパン09azAZ()
です
可能であれば半角sペースも許可したいのですが・・・
よろしくお願いいたします。
0479デフォルトの名無しさん
2010/09/16(木) 10:47:280480デフォルトの名無しさん
2010/09/16(木) 11:04:47^[A-Za-z0-9ヲ-゚\(\) ]+$
0481477
2010/09/16(木) 11:08:29問題なく動きました。
+やら他の部分は理解できるのですが
何故半角カナの判定が ヲ-゚ で正常に判定できるのでしょうか??
0482デフォルトの名無しさん
2010/09/16(木) 11:10:13Unicodeの半角カナって0201と同じ並びになってるんだっけ?
0483デフォルトの名無しさん
2010/09/16(木) 11:19:00半角カナコード表
0484デフォルトの名無しさん
2010/09/16(木) 11:24:160485デフォルトの名無しさん
2010/09/16(木) 11:25:31http://charset.7jp.net/jis0201.html
>>481
A-Z で半角英大文字が判定できるのと同じ理屈ですよ。
それより音引きで範囲指定しようとしてたことを気にしてほしい。
0486477
2010/09/16(木) 12:12:16コード表見て納得しました。
まだまだ勉強が足りないようで恥ずかしい限りです。
精進したいと思います。
ありがとうございました。
0487デフォルトの名無しさん
2010/09/16(木) 12:44:10>>485-486
質問者は未だ音引きの事実に気付いていない悪寒
0488477
2010/09/16(木) 15:27:25少し勉強してみました。
アーン
の部分の
-
あるべきところを
ー
のようにしてしまっていたことですよね?
この部分に関しては完全なこちらの記述ミスだったと思っております。
でも言われるまで単純に気がつきませんでした・・・
0489デフォルトの名無しさん
2010/09/16(木) 21:52:56逆の誤変換はたまーに見るよね。
ガ−ベジコレクションとか。
0490デフォルトの名無しさん
2010/09/17(金) 07:46:160491デフォルトの名無しさん
2010/09/17(金) 08:06:290492デフォルトの名無しさん
2010/09/17(金) 11:18:23ガベージコレクション 約 251,000,000 件
ガーベージコレクション 約 250,000,000 件
ガベッジコレクション 約 110,000 件
ガベジコレクション 約 13,200 件
ガベコレ 約 23,300 件
0493デフォルトの名無しさん
2010/09/17(金) 11:25:23発音は
ガービッジ
が近いな
ttp://ejje.weblio.jp/content/garbage
0494デフォルトの名無しさん
2010/09/18(土) 05:40:57"ガーベジコレクション" 約 39,500 件 (0.14 秒)
"ガベージコレクション" -"ガーベジコレクション" 約 357,000 件 (0.24 秒)
"ガーベジコレクション" -"ガベージコレクション" 約 24,100 件 (0.09 秒)
0495デフォルトの名無しさん
2010/09/18(土) 07:04:080496デフォルトの名無しさん
2010/09/18(土) 07:28:100497デフォルトの名無しさん
2010/09/18(土) 08:26:210498デフォルトの名無しさん
2010/09/18(土) 16:47:430499デフォルトの名無しさん
2010/09/18(土) 20:00:040500デフォルトの名無しさん
2010/09/18(土) 20:05:53なんというか日本語の柔軟性と正規表現て相性ワルイなと
0501デフォルトの名無しさん
2010/09/19(日) 05:47:060502デフォルトの名無しさん
2010/09/19(日) 05:48:340503デフォルトの名無しさん
2010/09/19(日) 16:22:39以下の様な複数行のターゲットがあって、zyzの文字列が有る行のみ
残したいのです。
.+[^(zyz)].+\n じゃダメだったし、力不足でニッチもサッチもいきませんorz
どなたかHELP ME・・・・・
AAABBBzzyCCDDDEEEAAA
AAABBBDDzyzEEEAAA
AAABBBCCzyzEEEAAA
AAABBBCCDDDAAA
AAACCDDDEEEAA
AzyzAABBBCCDDDEEEAAA
0504デフォルトの名無しさん
2010/09/19(日) 17:29:25http://www.din.or.jp/~ohzaki/regex.htm
^((?!zyz).)*\n
0505デフォルトの名無しさん
2010/09/19(日) 17:46:210506デフォルトの名無しさん
2010/09/25(土) 01:17:42「
int int1=10;
int int2=20;
」
の文字列から任意のユーザ定義語(例えばint1, int2)だけ取り出したいのですが
どんな風に書けばよいでしょうか?
ちなみにC#のRegexでマッチさせたいと考えてます.
0507デフォルトの名無しさん
2010/09/25(土) 01:40:26int[12]
という冗談はさておき、厳密にやろうとしたら正規表現では無理。
yacc(bison)でも使ったら?
0508デフォルトの名無しさん
2010/09/25(土) 10:52:29int¥s+(¥w+)¥s+=
ぐらいでいけそうだけどな。自分用ならyaccのたぐいを
持ち出すよりはお手軽だ。うまくいかなかったら調整
すればいいし。
人様に使わせるものならそういうわけにもいかないけど。
0509デフォルトの名無しさん
2010/09/25(土) 13:52:31ありがとう
正規表現で
語(予約語+ユーザ低語)は
[a-zA-Z_][a-zA-Z_0-9]*
で多分抜き出せると思うが,
抜き出した結果がintとかswitchとか予約後の場合
マッチングの結果から取り除く,というのを正規表現だけで
表現できませんか?
0510デフォルトの名無しさん
2010/09/25(土) 15:15:31だからそういうのは正規表現向きじゃないって。
C#なら、予約語リストを用意しておいてそれとマッチするかチェックすればいいじゃん。
# 予約語をDBに入れたら検索も手抜きできるけど、そこまでするかどうかは別の問題
0511デフォルトの名無しさん
2010/09/26(日) 01:05:10(hoge|omg)|poo,muu
例えばこんな文字列で、()に囲まれた|は無視して、|を見つけるとかはできるんでしょうか?
0512デフォルトの名無しさん
2010/09/26(日) 08:46:310513デフォルトの名無しさん
2010/09/26(日) 09:35:470514デフォルトの名無しさん
2010/09/26(日) 10:11:13\|(?![^\(]*\))
0515デフォルトの名無しさん
2010/09/26(日) 10:41:14やらせたがる奴が後を絶たないのだろう。ちょっとは
まじめに勉強しろよ。そう難しい話じゃないんだからさ。
0516デフォルトの名無しさん
2010/09/26(日) 11:30:280517デフォルトの名無しさん
2010/09/26(日) 17:36:13いままでこのようなことはありませんでした。
外泊するときはかならず一言あったのですが。
いま、嫁がどこにいるのか検索できないでしょうか。
0518デフォルトの名無しさん
2010/09/26(日) 17:51:341.GPS機能のついたケータイを持たせる(認知症の老人などで実績あり)
2.腕や足にGPS機能のついた発信器を付ける(元犯罪者の監視で実績あり、米国)
3.嫁に首輪を付けて、常に自分がハーネスを持っているようにする
4.自分に首輪を付けて、常に嫁にハーネスを握っていて貰う
5.夢から覚める
0519デフォルトの名無しさん
2010/09/27(月) 05:48:240520デフォルトの名無しさん
2010/09/27(月) 08:49:45どうしてそれがいえるのかさっぱりわからない。
あと数は数えられないわけじゃなくてあらかじめ数えたい数までの
状態を用意しておく必要があるだけだよw
0521デフォルトの名無しさん
2010/09/27(月) 11:43:26ドミノ倒し式に電子が飛び出すって話だろう
0522デフォルトの名無しさん
2010/09/30(木) 19:40:05PHP5.29
●検索か置換か?
検索
●説明
:より前の記号部分を取得したい。
●対象データ
5789:石鹸
w555-2:タオル
Zxcvb:ハンガー
●希望する結果
5789
w555-2
Zxcvb
0523デフォルトの名無しさん
2010/09/30(木) 21:00:090524デフォルトの名無しさん
2010/10/01(金) 18:29:560525デフォルトの名無しさん
2010/10/02(土) 21:52:42test.com/test1/test2/test3 を取るにはどう書いたらいいでしょうか
test1やtest2の階層は増えたり減ったりします。
要するにhttp://から最後の/の間の値がほしいです
0526デフォルトの名無しさん
2010/10/02(土) 21:59:54使ってる言語にあわせて適当に変えてね
0527デフォルトの名無しさん
2010/10/02(土) 23:22:300528デフォルトの名無しさん
2010/10/03(日) 02:10:070529デフォルトの名無しさん
2010/10/06(水) 22:48:260530デフォルトの名無しさん
2010/10/06(水) 22:57:53あとこれで数字は入ったり入らなかったりする場合にもマッチさせたいのです。
0531デフォルトの名無しさん
2010/10/06(水) 23:20:440532デフォルトの名無しさん
2010/10/07(木) 00:43:310533デフォルトの名無しさん
2010/10/07(木) 00:47:380534デフォルトの名無しさん
2010/10/07(木) 00:48:29お前の眼は節穴か?小文字がどこにあるというんだ?
0535デフォルトの名無しさん
2010/10/07(木) 00:48:58ありが�d
0536デフォルトの名無しさん
2010/10/07(木) 16:29:19だが要件に小文字とは言ってないぞ
0537デフォルトの名無しさん
2010/10/07(木) 17:43:560538デフォルトの名無しさん
2010/10/07(木) 17:57:51[A-Za-z0-9]{32}
0539デフォルトの名無しさん
2010/10/07(木) 18:48:18入る文字列がA-Z0-9であった場合、その中にA-F0-9以外の文字が現れる確率を求めなさい
0540デフォルトの名無しさん
2010/10/07(木) 19:58:230541デフォルトの名無しさん
2010/10/07(木) 21:04:570542デフォルトの名無しさん
2010/10/08(金) 14:10:180543デフォルトの名無しさん
2010/10/09(土) 00:57:47.replace(/^(http:\/\/\w+\.ggpht\.com\/(?:\w+\/){4})s\w+\/(\w+\.\w+)$/, "$1$2")
↓このURLを
http://lh4.ggpht.com/_t_n4016d-gI/STHDImgY6vI/AAAAAAAAAQo/AYanW_8Hr_4/s128/IMG_0888.JPG
↓
http://lh4.ggpht.com/_t_n4016d-gI/STHDImgY6vI/AAAAAAAAAQo/AYanW_8Hr_4/
↑これに変える動作させたいのですが
正解の正規表現を教えてください
0544デフォルトの名無しさん
2010/10/09(土) 01:05:06>>738は解決したのでももういいです
0545デフォルトの名無しさん
2010/10/09(土) 01:06:180546デフォルトの名無しさん
2010/10/10(日) 09:04:59.replace(/^(http:\/\/.+\.static.flickr.com\/[^/]+\/\w+_\w+_)m(\.\w+)$/, "$1b$2")
↑の /.+\.static.flickr.com\/ の部分
対象が「*.static.flickr.com」なのを「farm1.static.flickr.com」に変更したいんですけど
正しい正規表現を教えてください
※こういうURL置換させることを目指してます
http://farm1.static.flickr.com/127/349535809_df2deac900_m.jpg
↓
http://farm1.static.flickr.com/127/349535809_df2deac900_b.jpg
0547デフォルトの名無しさん
2010/10/10(日) 09:17:530548デフォルトの名無しさん
2010/10/10(日) 09:18:37/^(http:\/\/farm1\.static\.flickr\.com\/[^/]+\/\w+_\w+_)m(\.\w+)$/
0549デフォルトの名無しさん
2010/10/10(日) 09:47:53URL置換出来ました
ありがとうございましたm(_ _)m
0550デフォルトの名無しさん
2010/10/10(日) 10:09:32.replace(/^(http:\/\/\w+\.ggpht\.com\/(?:\w+\/){4})s\w+\/(\w+\.\w+)$/, "$1$2"));
↑のスクリプトですが対象のURL文字列に『-(ハイフン)』が含まれてる場合に動作しません
『-(ハイフン)』が入っていても動作可能な正規表現を教えてください
※こういうURL置換させることを目指してます
『-(ハイフン)』URL文字列中の『-』の位置は画像ごとにランダムに移動
http://lh4.ggpht.com/_t_n4016d-gI/STHDImgY6vI/AAAAAAAAAQo/AYanW_8Hr_4/s128/IMG_0888.JPG
↓
http://lh4.ggpht.com/_t_n4016d-gI/STHDImgY6vI/AAAAAAAAAQo/AYanW_8Hr_4/IMG_0888.JPG
0551デフォルトの名無しさん
2010/10/10(日) 10:19:16動かなかったら[\w\-]
0552デフォルトの名無しさん
2010/10/10(日) 10:20:540553デフォルトの名無しさん
2010/10/10(日) 11:17:35おかげさまで動きました。
個人的に非常に使えるスクリプトを作ることが出来ました。
ありがとうございました。
0554デフォルトの名無しさん
2010/10/12(火) 08:15:360555デフォルトの名無しさん
2010/10/12(火) 19:41:02特定の文字列・記号を正規表現でリネームしたいのですが思いつきません。
ファイル名前半部が異なるファイルが50以上あるのですが、思い通りにrenameしてくれません。
ご教示お願いいたします。
対象ファイル:
iko_foobar_hogehoge_20101008.tsv
リネーム後ファイル:
iko_foobar_hogehoge-20101008.tsv
コマンドの実行イメージ
rename iko*_[\d,8].tsv iko*-[\d,8].tsv
IN_FILE = ma_sina_syo_20100101
OUT_FILE="${DIR_PATH_RCV}/${PREFIX}$(basename ${IN_FILE})${MARK}${YMD}.tsv"
OUT_FILE=iko_ma_sina_syo-20100101.tsv
0556デフォルトの名無しさん
2010/10/12(火) 22:12:380557デフォルトの名無しさん
2010/10/12(火) 23:18:53<select name="select$item1" onchange="javascript:dummry();" id="select_item1">
<option selected="selected" value="0">(none)</option>
<option value="1">item1</option>
<option value="2">item2</option>
<option value="3">item2</option>
</select>
※optionの行にはいくつかタブが入っています。
「id="select_item1">([.\r\n\t\f]*)option value="([1-9]*)"」と書けば拾ってくれると思ったんだけどダメでした。
何か忘れている箇所がありましたら、是非アドバイスをお願いします。
ちなみに(おそらくnameに$が入っているせいだと思いますが)HTMLリンクパーサは動きません(涙
0558デフォルトの名無しさん
2010/10/13(水) 10:52:310559557
2010/10/13(水) 16:27:18「id="select_item1">([\r\n\t\f]*)<(.*)>(.*)</option>([\r\n\t\f]*)<option value="([1-9]*)">」
の5番目を引っ張ることでなんとか取得出来ました。
・・・もう少しスマートな方法があるような気がとってもするのですが(汗、
わかりやすくはあるのでよしとしておきます。
アドバイス、ありがとうございました!
0560デフォルトの名無しさん
2010/10/13(水) 16:44:01違うw
[.]はピリオドそのものを表してる
JMeter は知らないけど
id="select_item"[^<]*<option[^>]*?value="([^"]*)"[^>]*>[^<]*<option[^>]*?value="([^"]*)"[^>]*>
とかでいけるんじゃね?
0561デフォルトの名無しさん
2010/10/13(水) 16:45:50id="select_item"[^<]*<option[^>]*?value="([^"]*)"[^>]*>[^<]*<\/option>[^<]*<option[^>]*?value="([^"]*)"[^>]*>[^<]*<\/option>
かな
0562デフォルトの名無しさん
2010/10/13(水) 16:57:17optionvalue
0563デフォルトの名無しさん
2010/10/13(水) 17:06:02そんな文字列があるのは想定外
じゃあこう
id="select_item"[^<]*<option\s[^>]*value="([^"]*)"[^>]*>[^<]*<\/option>[^<]*<option\s[^>]*value="([^"]*)"[^>]*>[^<]*<\/option>
本当はこう書きたいところ
<select\s[^>]id="select_item">[^>]*(?:<option\s[^>]*value="([^"]*)"[^>]*>[^<]*</option>[^>]*)*</select>
0564557
2010/10/13(水) 18:37:18>違うw
>[.]はピリオドそのものを表してる
おっと、それは失敬。なるほど、このせいで動かなかったのですね。
例題の提示もしていただいて本当にありがとうございます。
上記のとおり今回は分かりやすさを優先しておきますが、リファレンス片手に読み解いてみます。
勉強させていただきますね(拝
0565デフォルトの名無しさん
2010/10/13(水) 21:31:54ガ━━(゚Д゚;)━━ン!
0566デフォルトの名無しさん
2010/10/14(木) 23:29:110567デフォルトの名無しさん
2010/10/15(金) 07:29:470568デフォルトの名無しさん
2010/10/18(月) 22:32:13テキストの中の<location></location>で囲まれた行のみ処理対象にして、
1.<location></location>を残す。
2../(ピリオドとスラッシュ)を追加。
3.前から8個目(後ろから1個目)の/(スラッシュ)以降のファイル名を残す。
という正規表現を教えてください。
例
<location>file:///(ドライブ名):/(フォルダ名)/(フォルダ名)/(フォルダ名)/(フォルダ名)/(ファイル名)</location>
という行がテキストファイル内に存在したら
<location>./(ファイル名)</location>
という内容に変更したい。フォルダ名とファイル名に規則性無し。
特に、8個目の/(スラッシュ)以降の文字列を残す方法が全くワカリマヘン。
現状レベル
昨日から丸1日正規表現に取り組んで、近づいてる様な近づいてない様な抽出実験してるレベルです。
因みに今回のテキストファイルは、VLCのプレイリストのxspfファイルです。
ファイルを移動した時、プレイリストが絶対アドレスで定義されてるので、リンクが切れてしまいます。
今回の変更で、相対アドレスになりある程度のファイル移動が可能になる。まあ仕事じゃない趣味のレベルです。
宜しくお願いします。
0569デフォルトの名無しさん
2010/10/19(火) 00:48:04s/<location>.*?([^\/]+)<\/location>/<location>./$1<\/location>/
0570568
2010/10/19(火) 14:26:12.*?([^\/]+) の部分が / 間の文字列が抽出出来る事はナントカ理解できました。
>>568 について具体的には・・・(質問が前後してしまいスミマセン)
今回のxspfファイルです。
尚、各タグの前には、数文字分スペースが空いてる場合もあります。投稿した画像で分かります。
------
<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/">
<title>プレイリスト</title>
<trackList>
<track>
<location>file:///G:/tv%20John/videos/fold1/fold2/Record.ts</location>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>0</vlc:id>
</extension>
</track>
</trackList>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:item tid="0" />
</extension>
</playlist>
------
サクラエディタで実験してみました。(使いこなせてないケド) http://iup.2ch-library.com/i/i0172035-1287464921.jpg
置換前に \s*<location>.+</location> を指定して「該当行マーク」ボタンを押すと黄色マーキングが出来ました。
黄色マーキングされた
<location>file:///G:/tv%20John/videos/fold1/fold2/Record.ts</location>
を
<location>./Record.ts</location>
に置換するには「置換後」に何を記述したら良いのでしょうか?
0571デフォルトの名無しさん
2010/10/19(火) 15:27:21>>569のs〜ってのはsedとかviとかperlでの置換(Substitution)命令
s 区切り文字 正規表現 区切り文字 置換文字列 区切り文字
で、正規表現を置換文字列に置換する
後はサクラエディタのヘルプ調べればわかるはず
0572sage
2010/10/19(火) 15:30:36php5
●検索か置換か?
置換
●説明
tableタグ内の改行(<br />)を全て削除したい
●対象データ
<table border="1" cellpadding="5" cellspacing="0" class="xx" id="xx"><br />
<tbody><br />
<tr><br />
<td><br />
</td><br />
</tr><br />
</tbody><br />
</table>
●希望する結果
<table border="1" cellpadding="5" cellspacing="0" class="xx" id="xx">
<tbody>
<tr>
<td>
</td>
</tr>
</tbody>
</table>
0573572
2010/10/19(火) 15:31:38よろしくお願いします!
0574デフォルトの名無しさん
2010/10/19(火) 15:59:25ググって考えろ。丸投げのアホは氏ね。
0575568
2010/10/20(水) 15:00:18サクラエディタでも出来ました。ありがとうございます。
置換前 <location>.*?([^\/]+)<\/location> 置換後 <location>./$1</location> 又は <location>.\/$1<\/location>
当初 $1 の利用法が全く理解不能でしたが、ナントナク分かりました。
>"$1、$2、$3……"を使うと、検索文字列内の "()" で囲まれた部分を、置換文字列側で参照することができます。
>"()" で囲まれた部分にマッチしたところを左から数えて、最初が$1、2番目が$2という具合です。
あと、仰るとおり s/ の意味もワカリマセンでした。超単純に解釈すると、コマンドパラメタの区切りみたいな役目だったんですね。
ドーデモイイ事ですけど不思議に思った事が・・・
置換の正規表現で <location>./$1</location> 又は <location>.\/$1<\/location> 両方共結果が同じでした。
/ と \/ ではナゼ同じなのでしょうか?(/ はメタキャラクタ?でもないし) 因みに \\/ にするとさすがに結果が変わりましたケド。
/で変更 http://iup.2ch-library.com/i/i0172641-1287554183.jpg
\/で変更 http://iup.2ch-library.com/i/i0172642-1287554183.jpg
\\/で変更 http://iup.2ch-library.com/i/i0172643-1287554183.jpg
0576デフォルトの名無しさん
2010/10/20(水) 15:23:420577576
2010/10/20(水) 15:29:50これでいけました
0578デフォルトの名無しさん
2010/10/20(水) 18:31:52> / と \/ ではナゼ同じなのでしょうか?
エスケープ不要な文字にいちいち \ つけるんじゃねーよという文句も言わずに
「本当は要らないのに」と内心思うぐらいで粛々と作業してくれる処理系が多いのです。
0579デフォルトの名無しさん
2010/10/20(水) 19:52:32サクラエディタを使っています。
幼稚な質問をお許し下さい
見出し1=任意文字列1
見出し2=任意文字列2=任意文字列3
見出し3=任意文字列4=任意文字列5=任意文字列6
【こうしたい】
見出し1= 任意文字列1
見出し2= 任意文字列2=任意文字列3
見出し3= 任意文字列4=任意文字列5=任意文字列6
0580デフォルトの名無しさん
2010/10/20(水) 20:10:24perlはどの記号が\いるかいらないかいちいち人が覚えるのは大変だから
特に正規表現として特別な意味がない記号でも全部\つけたらその文字
自身を表すってことにしちゃったんだよね。
0581デフォルトの名無しさん
2010/10/20(水) 20:16:20みたいにすることはよくある
>>579
^(.*?=) で検索して $1\t で置換
エスケープシーケンスを有効にする、みたいな項目があったらチェックして置換してね
サクラエディタ持ってないからうまくいかなかったらスルーで
0582579
2010/10/20(水) 21:50:340583568
2010/10/21(木) 15:13:160584デフォルトの名無しさん
2010/10/21(木) 21:16:200585デフォルトの名無しさん
2010/10/23(土) 20:07:020586デフォルトの名無しさん
2010/10/23(土) 20:45:160587デフォルトの名無しさん
2010/10/23(土) 21:02:59ありがとうございます
後方不一致とか色々やってみたけど結局うまくいかなかった・・・
0588デフォルトの名無しさん
2010/10/23(土) 21:42:450589デフォルトの名無しさん
2010/10/25(月) 17:58:150590デフォルトの名無しさん
2010/10/25(月) 18:07:28A(?!BC)
0591デフォルトの名無しさん
2010/10/25(月) 18:10:23出来ました。ありがとうございます。
0592デフォルトの名無しさん
2010/10/26(火) 03:16:21あああああああ
wwwwwwwwwww
HHHHHHHHHHHHH
のような行です。
0593デフォルトの名無しさん
2010/10/26(火) 03:28:09わかりにくくてすみません。
0594デフォルトの名無しさん
2010/10/26(火) 03:51:070595デフォルトの名無しさん
2010/10/26(火) 05:37:58ありがとうございます!
0596デフォルトの名無しさん
2010/11/01(月) 03:28:11【AAA】【AAA】はマッチ
【AAA】【BBB】はマッチしない
という感じです
0597デフォルトの名無しさん
2010/11/01(月) 03:34:20【AAA】【AAA】 → 【AAA】
のように置き換えたいと思ったのですが
マッチの部分で躓いてしまいました
0598デフォルトの名無しさん
2010/11/01(月) 05:26:080600デフォルトの名無しさん
2010/11/01(月) 06:41:09│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0601デフォルトの名無しさん
2010/11/01(月) 18:54:000602デフォルトの名無しさん
2010/11/01(月) 19:51:32│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱお!おっぱお!
└─┘ おっぱお!おっぱお!
韓ドラみたいになったお・・・
0603デフォルトの名無しさん
2010/11/01(月) 22:37:54^.*=(.+?)$ → \A.*=(.+?)\z に修正しましたが上手く動きません。
文章の最初と最後の記述は >\A >\z 以外に何を記述すれば良いのでしょうか?
尚、今回訂正する文法の参考と動作確認したのはコチラです ttp://www.rubular.com/
因みに RegExReplace( ClipBoard, "^.*=(.+?)$", "$1" ) で使用します。
宜しくお願いします。
0604デフォルトの名無しさん
2010/11/01(月) 22:50:360605デフォルトの名無しさん
2010/11/01(月) 23:54:20試行錯誤の末、漸く改行の意味が分かりました。たぶんw
\n も含めて文字列と解釈する様に訂正しました。
\A(.|\n)*=(.+?)\z にすると ttp://www.rubular.com/ では上手く行きました。
ご指摘ありがとうございます。 >>604 様
但し RegExReplace( ClipBoard, "\A(.|\n)*=(.+?)\z", "$2" ) に入れると、
考えてる様には動かない様なので RegExReplace の記述を再度調べてみます。
0606デフォルトの名無しさん
2010/11/02(火) 00:56:24使えるメタ文字(\Aとか)は正規表現ライブラリによって変わるよ
確認してるとこはRubyだし
RegExReplaceとやらのヘルプ調べてみては?
0607デフォルトの名無しさん
2010/11/02(火) 02:18:37PCREなら /pattern/s って s 修飾子つければ元のパターンのまま
期待通りの動作になってくれるようなの。
0608デフォルトの名無しさん
2010/11/02(火) 02:26:12>ライブラリによって変わる なるホド!違うのはナントナ〜ク分かってましたがそういう事でしたか。
RegExReplace を発見したので熟読してみます。
0609デフォルトの名無しさん
2010/11/02(火) 02:33:52おっと、前後してしまいました。
因みに処理系?というのは >AutoHotkey です。
ttp://sites.google.com/site/autohotkeyjp/reference/RegEx
RegExReplace でも色々有るんですね。今日レスされて分かりましたw
これって共通に使えるモノで、他の言語から呼出しても全く同じ仕様なのかな?と、勝手に解釈してましたわ。
0610デフォルトの名無しさん
2010/11/02(火) 02:48:53いろんな RegExReplace があるんじゃなくて正規表現エンジンが色々あるんです。
PCREで修飾子も諸々使えるんだね。
http://sites.google.com/site/autohotkeyjp/reference/RegEx#TOC-13
0611デフォルトの名無しさん
2010/11/02(火) 03:24:04>オプション
>パターンの最初に )で区切ってオプションを指定する。
>s .で改行文字もマッチするようにする
をそれなりに解釈して修正してみました。
RegExReplace( ClipBoard, "^.*=(.+?)$", "$1" ) の "^.*=(.+?)$", と解釈。変えてみましたが、$1と$2は空白でした。
)s^.*=(.+?)$
^.(*)s=(.+?)$
^(.*)s=(.+?)$
申し訳ありませんが >パターンの最初に )で区切ってオプションを指定する。 とは、こういう意味なんでしょうか?
アホですみません。
0612デフォルトの名無しさん
2010/11/02(火) 04:47:37)s^.*=(.+?)$
↓
)
s^.*=(.+?)$
↓
s)^.*=(.+?)$
0614デフォルトの名無しさん
2010/11/04(木) 05:36:24.replace(/^(http:\/\/farm1\.static\.flickr\.com\/[^/]+\/\w+_\w+_)m(\.\w+)$/, "$1o$2")
↑
のスクリプトを改変したいのですが、
以下の場合の正規表現をそれぞれ教えてください
0615デフォルトの名無しさん
2010/11/04(木) 05:38:32http://img.pics.livedoor.com/*/*/*/*-*.jpg
↓ 「*-*.jpg」を「*-1024.jpg」に変える
http://img.pics.livedoor.com/*/*/*/*-1024.jpg
※こういうURL置換させることを目指してます
http://img.pics.livedoor.com/009/0/b/0b3b287d7e66fff3ec46-M.jpg
↓
http://img.pics.livedoor.com/009/0/b/0b3b287d7e66fff3ec46-1024.jpg
( 2 )
http://*.photobucket.com/*/*/*/th_*.jpg
↓ 「th_」を削除
http://*.photobucket.com/*/*/*/*.jpg
※こういうURL置換させることを目指してます
http://i784.photobucket.com/albums/yy125/Pusgin/th_alex1a.jpg
↓
http://i784.photobucket.com/albums/yy125/Pusgin/alex1a.jpg
( 3 )
http://*.content.foto.mail.ru/*/*/*/*-*.jpg
↓ 「*-*.jpg」を「i-*.jpg」に変える
http://*.content.foto.mail.ru/*/*/*/i-*.jpg
※こういうURL置換させることを目指してます
http://img3.content.foto.mail.ru/mail/semins/3294/p-5879.jpg
↓
http://img3.content.foto.mail.ru/mail/semins/3294/i-5879.jpg
0616デフォルトの名無しさん
2010/11/04(木) 05:48:32.replace(/(http:\/\/img\.pics\.livedoor\.com\/(.+?\/){3}.+?-).+\.jpg$/i,"$11024.jpg")
0617デフォルトの名無しさん
2010/11/04(木) 05:53:41.replace(/^(http:\/\/.+?\.photobucket\.com\/(.+?\/){3})th_(.+?\.jpg)$/i,"$1$3")
0618デフォルトの名無しさん
2010/11/04(木) 05:56:52.replace(/^(http:\/\/.+?\.content\.foto\.mail\.ru\/(.+?\/){3}).+?(-.+?\.jpg)$/i,"$1i$3")
0619デフォルトの名無しさん
2010/11/04(木) 05:59:13動作確認
http://ideone.com/ld1NS
0620デフォルトの名無しさん
2010/11/04(木) 07:22:03完璧です
ありがとうございます!!!
0621デフォルトの名無しさん
2010/11/04(木) 08:42:08↑改変おねがいします
( 4 )
http://*.ac-images.myspacecdn.com/*/*/*_*.jpg
↓ 「*_*.jpg」を「l_*.jpg」に変える
http://*.ac-images.myspacecdn.com/*/*/l_*.jpg
※こういうURL置換させることを目指してます
http://c3.ac-images.myspacecdn.com/images02/80/m_22e6adfa8f2b4dafbf00b28a78e9db6e.jpg
↓
http://c3.ac-images.myspacecdn.com/images02/80/l_22e6adfa8f2b4dafbf00b28a78e9db6e.jpg
( 5 )
http://*.ak.fbcdn.net/*/*/*_*.jpg
↓ 「*_*.jpg」を「*_n.jpg」に変える
http://*.ak.fbcdn.net/*/*/*_n.jpg
※こういうURL置換させることを目指してます
http://sphotos.ak.fbcdn.net/hphotos-ak-snc1/hs137.snc1/5852_132531839605_775304605_3072465_7463459_s.jpg
↓
http://sphotos.ak.fbcdn.net/hphotos-ak-snc1/hs137.snc1/5852_132531839605_775304605_3072465_7463459_n.jpg
0622デフォルトの名無しさん
2010/11/04(木) 10:33:26つーか、少しでも勉強する気があるならいい加減自力でできてていい頃合いだろ。
クレクレ相手にするのも程々にしておかないと切りがないぞ。
0623デフォルトの名無しさん
2010/11/04(木) 10:56:21何がDoS攻撃だよ通報したけりゃ勝手にやれば?どこにするのか知らんが
てか、人の足引っ張って楽しいか?無能の癖に他人の邪魔だけは一人前だな
0624デフォルトの名無しさん
2010/11/04(木) 11:04:37( 4 ) は自力でできたのでもういいです
0625デフォルトの名無しさん
2010/11/04(木) 11:12:20「丸投げしたけど揶揄されたから自力でやってみたらできた」って素直に認めちまえよw
0626デフォルトの名無しさん
2010/11/04(木) 11:55:22つか622のおかげで自力でできたなw
0627デフォルトの名無しさん
2010/11/04(木) 19:53:58「自力でできたのでもういいです」なんてセリフを言われちゃ
本当は自分で出来ることを他人にやらせようとしてただけと感じちゃう
それじゃせっかくボラしてくれてる人も萎えちまうぞ
今まで教えてくれた人に報いる気があるなら、
せめて「〜としてみたらできました」と報告しようぜ
0628デフォルトの名無しさん
2010/11/04(木) 21:30:08これからはこのスレでボラの皆さんと一緒に活躍したいと思いますのでヨロシク!
0629デフォルトの名無しさん
2010/11/06(土) 06:48:03A=02
A=abc01
A=_abc_02
A=01_02_abc
これで、A=01 や A=02 だけにマッチさせる記述を教えてください
A=(?!abc|_abc)\w+
ではA=01_02_abcまでマッチしてしまいます
A=(?!abc|_abc)\w+(?!_abc) でも A=(?!abc|_abc)\w+(?!_abc)$ でもダメでした
よろしくお願いします
0630デフォルトの名無しさん
2010/11/06(土) 08:01:510631デフォルトの名無しさん
2010/11/06(土) 12:36:490632デフォルトの名無しさん
2010/11/06(土) 18:20:06レスありがとうございます
ですがマッチしませんでした
>>631
ありがとうございます
マッチいたしました
皆さんお世話になりました。
0633デフォルトの名無しさん
2010/11/06(土) 23:09:360634デフォルトの名無しさん
2010/11/07(日) 13:49:11すみません、わかりにくかったですね
>>630氏に教えていただいた「A=0[12]\n」では
A=01
A=02
A=abc01
A=_abc_02
A=01_02_abc
これらすべてにマッチしませんでした。
ですが>>631氏の「^A=\d+$」では
A=01
A=02
A=abc01
A=_abc_02
A=01_02_abc
これらの
A=01
A=02
のみにマッチさせることができた、ということです
0635デフォルトの名無しさん
2010/11/07(日) 19:54:490636デフォルトの名無しさん
2010/11/07(日) 21:03:230637デフォルトの名無しさん
2010/11/08(月) 00:02:270638デフォルトの名無しさん
2010/11/15(月) 16:45:54a(.*?)b
という文字列を渡すと
a([^b]*)b
という最短一致を排除した形式に変換してくれるスクリプトかなんかないかな。
0639デフォルトの名無しさん
2010/11/15(月) 22:54:09http://hibari.2ch.net/test/read.cgi/unix/1268282846/
272 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:42:30 ID: Be:
マウントオプションとは別に、CRLFをLFに変換するツールはないでしょうか?
美乳セーラー女子高生とSEX顔射フィニッシュ
というコマンドやnkfでも一応可能なのですが
専用のツールはなかったかと思いまして
273 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:43:21 ID: Be:
>>272
コピペミスった、、、、、
見なかったことにしてください
コマンドは、
cat crlf.txt | tr -d '\r' > lf.txt
です。
0640デフォルトの名無しさん
2010/11/15(月) 23:13:410641デフォルトの名無しさん
2010/11/18(木) 23:33:58自分がやるとif文とかwhile文までマッチしちゃいます。
0642デフォルトの名無しさん
2010/11/19(金) 03:52:38test.abcdef.ne.jp
test.ztv.ne.jp
「test.abc.ne.jpは除外」というルールを
^test\.[^abc]+\.ne\.jp$
と書いたのですが、test.abcdef.ne.jpも除外されてしまいます
^test\.(?!abc(?!def))\w+\.ne\.jp$
と書けばいいのですが、(?!)は環境により使えません
(?!)を使わず、「test.abc.ne.jpを除外し、test.abcdef.ne.jpは除外しない」というルールを教えていただきたいです。よろしくお願いします
0643デフォルトの名無しさん
2010/11/19(金) 09:09:100644デフォルトの名無しさん
2010/11/19(金) 10:08:30^test\.abc+\.ne\.jp$
でマッチさせて、マッチしたら除外でいいんじゃね?
0645デフォルトの名無しさん
2010/11/19(金) 10:09:140646デフォルトの名無しさん
2010/11/19(金) 10:13:02例えば^abc$の否定は
^(|.|..|[^a]..|[a[^b].|ab[^c]|....*)$
なので似たようなことをすればOK。君の問題のはめんどくさくて書く気
しないから自分で頑張れ。
0647デフォルトの名無しさん
2010/11/19(金) 11:58:08sed -e 's/\(.*\)(.*?)\(.*\)/\1([^\2]*)\2/'
0648デフォルトの名無しさん
2010/11/20(土) 14:15:01ごめんなさい・・おっしゃってる意味がよく・・・
勉強中なもので・・お恥ずかしい
>>644
test.abcdef.ne.jp
test.ztv.ne.jp
だけを一気に検索できたら便利だなぁって思いまして。確かにおっしゃることはもっともなんですけど、アナログかなぁ・・って
>>646
>否定の正規表現は鬼門なのでおすすめしない。
そうなんですか!自分も(?!)とかは参考サイトで勉強したんですけどほんと難しかったです
そうだったんですね・・・鬼門でしたか。
みなさんレスありがとうございます。正規表現ってむつかしいですねやっぱり。
0649デフォルトの名無しさん
2010/11/20(土) 14:19:380650デフォルトの名無しさん
2010/11/20(土) 14:58:41一度にパッてやりたいじゃないですか。パッて検索したり置換したり
自分いまだに後方参照ってものをモノにしてなくて正規表現を含む文字列の置換はいまだに手でチマチマとやってるんですよ・・だから手作業でやるのはアナログだなぁって。
0651デフォルトの名無しさん
2010/11/20(土) 15:00:420652デフォルトの名無しさん
2010/11/20(土) 15:06:36^test\.abc\.ne\.jp$でマッチさせて、マッチしたらそれを手作業で消して、ってことじゃないんですか?
0653デフォルトの名無しさん
2010/11/20(土) 15:28:20抽象的なパターンでしかないので
スクリプト言語と組み合わせて
ファイルから各行を読み込む
各行について正規表現 ^test\.abc\.ne\jp$ とマッチするなら
除外
しないなら
なんらかの処理
とかしたほうがいいと思うんだけど、それとは話が別なんだろうか
0654デフォルトの名無しさん
2010/11/20(土) 15:36:56^test\.abc\.ne\jp$
の条件に合致したものが除外・選択、という処理がなされるということですね
漏れはエディタに各文字列を入力してそれを単に検索してるだけです
自分はプログラムとかはサパーソなんですけど、正規表現については便利だなぁって思いまして。
エディタで色々どんなものか試してるんです。覚えたらファイル検索とかに役立ちますものね
0655デフォルトの名無しさん
2010/11/20(土) 16:33:55どんな実装してるか分からないエディタではなく
Perl なり JavaScript なりで試せよアホが
というか「文字クラス」の意味すら分からないところを見ると
俺が指示したオライリーのサイ本もまだ読んでないだろ?
やはりお前は口では「勉強中」とか言いつつ、本気で勉強する気など無いことがまた明らかになったな
0656デフォルトの名無しさん
2010/11/20(土) 16:35:240657デフォルトの名無しさん
2010/11/20(土) 16:55:30>>655はたぶんPerl忍者
0658デフォルトの名無しさん
2010/11/20(土) 17:37:20Greasemonkeyスレでも「○○するスクリプトを作ってくれ」を連発する一方
自分はJavaScriptを覚えるどころか読む気すらないのに「勉強してるんだから教えろ」と言う人物でして
サイ本を出したのもその流れの中でのことです
詳しくは → http://2chnull.info/r/software/1280677666/676-785 あたりをご参照下さい
といってもこのスレ的には無関係な話でしたね。申し訳ありません
0659デフォルトの名無しさん
2010/11/20(土) 17:51:530660デフォルトの名無しさん
2010/11/21(日) 09:35:54.Pattern = "(^)?(<!.*>)($)?"
でやったら連続したコメント(<!・・・><!・・> 行頭行末含む)が抽出できませんでした。
何が間違ってるのか教えていただきたいです。
0661デフォルトの名無しさん
2010/11/21(日) 09:36:360662660
2010/11/21(日) 10:03:48すばやい回答ありがとうございます。
「.*」というのは、0文字以上の任意の文字列と考えて付加したんですが・・何か間違っているのでしょうか?
0663デフォルトの名無しさん
2010/11/21(日) 10:09:23.*にすると最長一致になる
http://www.rubular.com/r/0Jwha2lugE
.+?って書くと最短一致になるから、
(^)?(<!.+?>)($)?
とすれば出来ると思う
http://www.rubular.com/r/2uXXJArUB7
0664デフォルトの名無しさん
2010/11/21(日) 10:12:38<!--(.+?)-->
じゃ駄目なのか?
0665660
2010/11/22(月) 19:09:45ですが、最長一致にしろ最短一致にしろ、連続したコメントを拾えないのは同じでは・・
と思ったんですが何故か通りました。
ありがとうございました!
>>664
動作確認しました。ありがとうございます。
以前何かで正規表現書いていたときに、(確かJavaScriptだったかな)
それだと行頭と行末はスルーしてしまったので無意識につけてました。
あれはなんだったんだろう。。今度機会があったらまた試して見ます。。
0666デフォルトの名無しさん
2010/11/23(火) 15:59:190667デフォルトの名無しさん
2010/11/23(火) 16:02:06不特定多数や18歳以下の人が閲覧可能な環境下では控える事をおすすめします
0668デフォルトの名無しさん
2010/11/23(火) 16:26:130669デフォルトの名無しさん
2010/11/23(火) 17:00:390670デフォルトの名無しさん
2010/11/23(火) 17:07:420671デフォルトの名無しさん
2010/11/23(火) 17:09:10実行した
0672デフォルトの名無しさん
2010/11/23(火) 18:28:19rm .* とやったら
親ディレクトリも一緒に消えたでござるの巻
0673デフォルトの名無しさん
2010/11/24(水) 13:27:290674デフォルトの名無しさん
2010/11/26(金) 21:41:35C#2010
●内容
IsMatchで"(A|B)"のような比較をしたいんですが、
この場合キャプチャしないよう"(?:A|B)"と書くべき
なんでしょうか?
0675デフォルトの名無しさん
2010/11/27(土) 06:59:15そうでないなら気にするな
0676デフォルトの名無しさん
2010/11/27(土) 17:31:24後で使うならキャプチャー、使わないなら(?:で
他人の書いた正規表現をメンテする場合、うかつキャプチャーすると後方参照
の順番が狂ったりするし、キャプチャーする必要がなければしないようにしてる
0677デフォルトの名無しさん
2010/11/27(土) 23:58:46ありがとう。
完全に関数内のみで使う予定だったので
とりあえずそのままにしておきます。
単純なis系の関数なのでキャプチャさせないだけで
ほんの少しでもパフォーマンスが上がるならと考えてました。
0678デフォルトの名無しさん
2010/12/07(火) 15:39:32Devas(ディレクトリ内の再帰検索及び置換ソフトでGrep互換)
●検索か置換か?
検索と置換
●説明
HTMLのaタグにonclick属性を追加,または追記したい
●対象データ
数百のSmartyテンプレート
(HTMLやフレームワークのコードを含む文字列)
単純に<a hrefで始まるものばかりではなく,<a class等で始まるものもある
●希望する結果
htmlのaタグから
href="xxxxx-regist"を含んでおり,
かつonclick="xxx"含んでいる または 含んでいないものを検索,置換し
onclickにアクションを追加または追記
<a href="xxx-regist" onclick="追加または追記したい">
対象ページが数百もあり,とても手作業で修正できないため正規表現の力を借りたいです
aタグはすぐにhrefで始まるものばかりではないため,以下のような正規表現を考えたのですが,
なぜか複数行に渡ってしまう結果が抽出されたりとうまくいきません
href=".+\-regist".+?(onclick="(.+)")?.+?\n
ご教授いただけないでしょうか・・
0679デフォルトの名無しさん
2010/12/07(火) 15:44:060680デフォルトの名無しさん
2010/12/07(火) 19:36:40"([^"]+)" とかしろよ。
0681デフォルトの名無しさん
2010/12/07(火) 21:02:32メタキャラクタぐらい覚えてからこい
0682デフォルトの名無しさん
2010/12/09(木) 16:07:34┃ ┌────────────────────────ーーー┐ ┃
┃ │ / ̄ ̄\ │ ┃
┃ │ / ヽ_ .\ │ ┃
┃ │ ( ●)( ●) | ____ │ ┃
┃ │ (__人__) | / \ .| ┃
┃ │ l` ⌒´ | / ─ ─ \ │ ┃
┃ │ . { |/ (●) ( ●) \ .| ┃
┃ │ { / | (__人__) | │ ┃
┃ │ ,-、 ヽ ノ、\ ` ⌒´ ,/__ .| ┃
┃ │ / ノ/ ̄/ ` ー ─ '/>< ` ー─ ' ┌、 ヽ ヽ、 │ ┃
┃ │ / L_  ̄ / _l__( { r-、 .ト、 . │ ┃
┃ │ _,,二) / 〔― ‐} Ll | l) ).│ ┃
┃ │ >_,フ / }二 コ\ Li‐' .| ┃
┃ │ __,,,i‐ノ l └―イ ヽ | . | ┃
┃ │ l i ヽl . | ┃
┃ └ーーー────────────────────────┘ ┃
┗-━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
平成22年12月9日(木)
0683デフォルトの名無しさん
2010/12/10(金) 07:45:22(.com|.org)は(\.com|\.org)ってしたほうがいいんでしょうか
0684デフォルトの名無しさん
2010/12/10(金) 08:17:520685デフォルトの名無しさん
2010/12/10(金) 13:41:530686デフォルトの名無しさん
2010/12/10(金) 14:27:38つーかこれでいいじゃん
\.(com|org)
0687デフォルトの名無しさん
2010/12/10(金) 14:31:210688デフォルトの名無しさん
2010/12/10(金) 14:51:55答えは>>684で既に出てるだろks
0689デフォルトの名無しさん
2010/12/10(金) 15:12:220690689
2010/12/10(金) 15:13:110691デフォルトの名無しさん
2010/12/10(金) 16:06:12したほうがいいか?っていう問題なのか
ピリオドのみと\.ではマッチが異なるぞ
0692デフォルトの名無しさん
2010/12/10(金) 20:00:08メタ文字とかエスケープとか書いてるやつがいうことじゃねえw
0693683
2010/12/11(土) 20:28:32モヤモヤが解決しますた\(^−^)/
0694デフォルトの名無しさん
2010/12/13(月) 01:08:56対象: aaa_bbb_01ccc.mp3
↓
結果: aaa_bbb_01_ccc.mp3
"_"区切りの三番目の2桁数字部分が区切られていないヤツを(選び)全て結果のように区切りたい、ということです。
よろしくおねがいします。
0695デフォルトの名無しさん
2010/12/13(月) 01:26:24置換 $1_$2
0696デフォルトの名無しさん
2010/12/13(月) 01:36:350697デフォルトの名無しさん
2010/12/13(月) 02:20:41氏ね
>>695が親切に回答してくれてるだろ
量指定子をほんの少し変えればいいだけ
0698デフォルトの名無しさん
2010/12/13(月) 03:08:11そりゃ気分を悪くする人もいるわなぁ
0699696
2010/12/13(月) 03:44:49只今、にわかですが勉強させてもらいなんとかできました。
ありがとうございました。
0700デフォルトの名無しさん
2010/12/13(月) 09:53:50文字列1
文字列2
を
1
文字列1
2
文字列2
といったかんじです。
0701デフォルトの名無しさん
2010/12/13(月) 11:50:59スレ違いだと思う。
0702デフォルトの名無しさん
2010/12/13(月) 12:13:18Ruby なんかがあれば $ ruby -pe 'puts $.' old.txt > new.txt とかできる
0703デフォルトの名無しさん
2010/12/17(金) 12:41:40正規表現を扱えるFlexible Renamerを用いて色々と試しているのですが、いまいち行いたいことが出来ません。
ファイルに付いている一定の法則でついている共通したタグを、ファイル名の末尾に"移動"させたいのです。
例: [2010-12-13] [IN] AABBCC.nef -> [IN] AABBCC [2010-12-13].nef
検索では \[20..-..-..] と打つことで指定することができたのですが、移動の仕方が検索しても見つかりません…
正規表現では"移動"を行うことは出来ないのでしょうか?
どうかご教示お願いします!
0704デフォルトの名無しさん
2010/12/17(金) 12:45:28置換に $2$1.nefでいけるかな
0705デフォルトの名無しさん
2010/12/17(金) 13:19:360706デフォルトの名無しさん
2010/12/17(金) 13:35:00いいえエラーになります
0707デフォルトの名無しさん
2010/12/18(土) 00:08:36正規表現始めて3日目の俺にはちょうどいい練習問題だ
固定の部分がはっきりしてるし適当にこんな感じで
検索:(\[.+?\]) (\[.+\]) (.+)\.nef
置換:\2 \3 \1.nef
置換の部分はツールに合わせて\とか$とかかんとかしてくれ
0708デフォルトの名無しさん
2010/12/18(土) 02:43:231から始まるのとどちらが正しいの
0709デフォルトの名無しさん
2010/12/18(土) 07:21:35人が混み入ったところに近づきたくない
0710デフォルトの名無しさん
2010/12/18(土) 07:39:510711デフォルトの名無しさん
2010/12/18(土) 09:37:38ありがとうございます!どちらも期待していたとおり働きました!
移動させるのではなく、ファイル名全てをぶつ切りで検索…
そしてそのぶつ切りにした要素?を並び替えると…なるほど
いったんちゃんと正規表現を勉強してみようと思います。
ありがとうございました!
0712デフォルトの名無しさん
2010/12/19(日) 05:55:09大昔から。
0713デフォルトの名無しさん
2010/12/19(日) 06:01:06B「チカンでじゅうぶんじゃね」
A「チカンじゃものたりなくてな」
B「俺も挑戦してみようかな、セイキヒョウゲン」
0714デフォルトの名無しさん
2010/12/19(日) 07:27:00「置換」は「痴漢」か。
ちなみにおいらの義妹は大人しい子でね、
廊下ですれ違いざまに抱きしめたり猥褻行為を行ったりしても全く怒らない。
親は「嫁に貰ってくれないか?」と焚き付けてくるし。
義妹もそのつもりのような気がしなくもない。
0715デフォルトの名無しさん
2010/12/19(日) 07:40:58濡れ衣を着せられやすいおいらでも、そういうことは特に経験したことないな。
以前満員電車で、鞄を持っている手がちょうど若い女の股間部分に嵌ってしまい、
身動き取れなくて当惑したことがあった。
だが、こちらが電車の揺れに乗じて股間に手をすりつけようとしているか、
逆に手を引っ込めようと努力しているのかとか、女の側にも見分けはつくのだろう
と思った。
0716デフォルトの名無しさん
2010/12/19(日) 08:55:160717デフォルトの名無しさん
2010/12/19(日) 11:07:220718デフォルトの名無しさん
2010/12/19(日) 12:05:04妄想の激しい君にはブチロフェノン系のハロペリドールのデポ剤の注射を
お勧めする。デポ剤だから注射一本で一ヶ月は効力あるぞい。
0719デフォルトの名無しさん
2010/12/19(日) 15:40:250720デフォルトの名無しさん
2010/12/19(日) 16:23:510721デフォルトの名無しさん
2010/12/19(日) 16:35:08正規表現
0722デフォルトの名無しさん
2010/12/20(月) 14:51:120723デフォルトの名無しさん
2010/12/20(月) 14:53:160724デフォルトの名無しさん
2010/12/22(水) 19:56:14\r\nを2回ってだけではだめなようで、解決策はありますか?
0726724
2010/12/22(水) 22:41:51使用ソフトはサクラエディタです。
改行が2連続したところを検索したいのです
以下の例で、”2と3”の間、”4と5”の間だけです。
実際の文字列とは違います。
1
2
3
4
5
0727デフォルトの名無しさん
2010/12/22(水) 22:42:40\r\nを2回でいいだろ
正規表現見直してみろ
0728デフォルトの名無しさん
2010/12/22(水) 22:55:33はどうですか?
0729デフォルトの名無しさん
2010/12/22(水) 22:57:14^\r\n$
0730726
2010/12/22(水) 23:00:44出来ました。
0731726
2010/12/22(水) 23:40:042桁以上の整数を、すべて+1する置き換えかたはありますか?
5
50
100
134
1295
↓
5
51
101
135
1296
って感じです
よろしくお願いします。
0732デフォルトの名無しさん
2010/12/22(水) 23:44:090733デフォルトの名無しさん
2010/12/23(木) 00:30:05cygwin導入して、sedとかの文章整形ツールを考えた方が良さそう。
windowsだけでやるならperl。
0734デフォルトの名無しさん
2010/12/23(木) 07:19:35それはExcelでやれ
0735デフォルトの名無しさん
2010/12/23(木) 11:39:590736デフォルトの名無しさん
2010/12/23(木) 11:40:21だったらExcelの関数で
=IF(A1>=10,A1+1,A1)
整数かどうかは自分で調べて。
0737デフォルトの名無しさん
2010/12/23(木) 12:57:362.数字の前後にtabを挿入
3.エディタからExcelにコピペ
4.数字以外と数字の列に分かれるているのを確認
5.Excelの機能(関数とか)を使って数字に+1
6.Excelからエディタにコピペ
7.1で置換した文字列をtabに戻す
0738デフォルトの名無しさん
2010/12/23(木) 13:16:45sedやawkわかんないんでRubyでやったけど正規表現関係なすね
0739デフォルトの名無しさん
2010/12/23(木) 16:15:280740デフォルトの名無しさん
2010/12/26(日) 19:20:48これを正規表現で表したいのですが、
どのように書けばよいのでしょうか?
0741740
2010/12/26(日) 19:21:290742デフォルトの名無しさん
2010/12/26(日) 19:25:09version="1.0"
0743デフォルトの名無しさん
2010/12/26(日) 19:26:50どこに正規表現が絡むんだろう
0744デフォルトの名無しさん
2010/12/26(日) 19:39:490745デフォルトの名無しさん
2010/12/26(日) 20:05:41str.replace(/version="1\.0"/, 'version="1.0" encoding="Shift_JIS"');
としてencoding属性を付けたいのですが上手くいきません。
0746デフォルトの名無しさん
2010/12/26(日) 20:27:15通常の置換でおk
0747デフォルトの名無しさん
2010/12/26(日) 20:28:050748デフォルトの名無しさん
2010/12/26(日) 20:39:23できませんでした。
XMLファイルの文字コードと異なる文字コードでソースを
書いてるから一致しないのかも。もう少しいろいろやってみます。
レスくれた方ありがとうございました。
0749デフォルトの名無しさん
2010/12/26(日) 20:44:30str = str.replace('<?xml version="1.0"?>', '<?xml version="1.0" encoding="Shift_JIS"?>');
0750デフォルトの名無しさん
2010/12/26(日) 20:56:34それもやってみたのですが、だめでした。
MSXML2.DOMDocumentの制限ですかね。
0751デフォルトの名無しさん
2010/12/26(日) 20:59:010752デフォルトの名無しさん
2010/12/28(火) 23:33:010753デフォルトの名無しさん
2010/12/29(水) 01:48:060754デフォルトの名無しさん
2011/01/12(水) 01:21:40Java1.6
●検索か置換か?
検索(Stringクラス String[] split(String regex)メソッドによる文字列分割)
●説明
CSVファイル中の一行を対象文字列とし、
その文字列中初出の\s*,\s*をデータ区切り子として見なしマッチさせる。
(その前後で文字列を2つに分割)
●対象データ
aaa,bbb,ccc
aaa, bbb, ccc
aaa , bbb , ccc
●希望する結果
aaa,bbb,ccc
^
aaa, bbb, ccc
^^
aaa , bbb , ccc
^^^
●希望しない結果
aaa,bbb,ccc
^ ^
aaa,bbb,ccc
^^^^
aaa, bbb, ccc
^^^^^^^^
etc...
自分で考えた(?<^[^,]*)\s*,\s*では
java.util.regex.PatternSyntaxException: Unknown look-behind group near index 8
(?<^[^,]*)\s*,\s*
^
というような例外が出てしまいました。
0755デフォルトの名無しさん
2011/01/12(水) 01:29:20●正規表現の使用環境
Java1.6
●検索か置換か?
検索(Stringクラス String[] split(String regex)メソッドによる文字列分割)
●説明
CSVファイル中の一行を対象文字列とし、
その文字列中初出の\s*,\s*をデータ区切り子として見なしマッチさせる。
(その前後で文字列を2つに分割)
●対象データ
aaa,bbb,ccc
aaa, bbb, ccc
aaa , bbb , ccc
●希望する結果
"aaa"と"bbb,ccc"に分割
"aaa"と"bbb, ccc"に分割
"aaa"と"bbb , ccc"に分割
●希望しない結果
"aaa"と"bbb"と"ccc"に分割
etc...
自分で考えた(?<^[^,]*)\s*,\s*では
java.util.regex.PatternSyntaxException: Unknown look-behind group near index 8
というような例外が出てしまいました。
よろしくお願いします。
0756デフォルトの名無しさん
2011/01/12(水) 02:08:060757デフォルトの名無しさん
2011/01/12(水) 09:34:57有り難うございます。
確かに処理を書き換えれば容易なのですが、後学のために、
できれば正規表現だけで解決できればと考えていました。。
0758デフォルトの名無しさん
2011/01/12(水) 12:40:360759デフォルトの名無しさん
2011/01/12(水) 21:34:03有り難うございます。
マッチ例が不適切で、そのように受け取られても仕方ないのですが、
処理対象は一般のCSVファイルの一行なので、
それだと1行に3項目でない場合(2項目以下や4項目以上)、はうまく分割できません。
できれば正規表現の範疇で解決したかったのですが、無理そうならば
limitを2の案で行こうと思います。
0760デフォルトの名無しさん
2011/01/13(木) 17:53:06C#
●検索か置換か?
検索
●説明
=の連続がある行で挟まれた部分を抽出したい
●対象データ
ゲスト========================
ほげほげ
ほげほげほげ
プロフィール===================
はげ
はげはげ
=============================
●希望する結果
"ほげほげ\nほげほげほげ"
"はげ\nはげはげ"
結果に=の行が含まれていても構いません
=は2つ以上連続している行が対象です
^.*={2,}$(?'block'.+?)^.*={2,}$ とやってみましたがマッチしませんでした
MultiLineオプションは指定しています
それと対象文字列から\rは事前に除去しています
よろしくお願いします
0761デフォルトの名無しさん
2011/01/13(木) 18:27:370762760
2011/01/13(木) 19:19:29=連続が含まれる行、と言う意味で付けてます
それと今見直してみると試した正規表現が違ってました
本当は↓これ
(?'blockhead'^.*?={2,}$)(?'blockbody'.+?)(?'blockfooter'^.*?={2,}$)
0763デフォルトの名無しさん
2011/01/13(木) 22:07:360764デフォルトの名無しさん
2011/01/13(木) 22:53:34URIを解析する正規表現としてこんなのが載っています
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
これをJavaに移植したいんですが
どの文字をエスケープすればいいのかわかりません
"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"
今これでやってるのですが、URLに"が含まれていても解析できてしまうので
どこか間違ってるみたいです
どなたか教えてもらえないでしょうか
0765デフォルトの名無しさん
2011/01/13(木) 23:33:09もう見てないかも知れんが
最初の\s*,\s*だけにマッチさせるのは難しそうだから
^([^,]*[^,\s])?\s*,\s*(.*)
こんな感じで1行全部マッチさせて必要なとこだけキャプチャしたら?
これなら正規表現だけ。
0766デフォルトの名無しさん
2011/01/14(金) 02:28:04それ、「URIを解析(分解)する正規表現」であって、
「正当なURIだけにマッチする正規表現」じゃないから
その結果で間違い無いと思うよ
何をしたいのかな?
0768デフォルトの名無しさん
2011/01/14(金) 13:20:32ggrks
0770デフォルトの名無しさん
2011/01/14(金) 13:27:170771デフォルトの名無しさん
2011/01/14(金) 13:35:28正規表現の欠点というより、欠陥。つまり、ほとんどの
メジャー言語の欠陥。
0772768
2011/01/14(金) 14:35:41「正規表現 チェック」で腐るほど情報が出るがお前の眼は空洞か?nullなのか?
「正規表現のデバッグ」なんて言ってる奴には理解できないのかもしれんが
0773760
2011/01/14(金) 15:47:34ググってTOP100くらい見たけど、それで?
マッチしない時に何処が悪いかこれで判るのか?
おまえさんの前頭葉がnullなんじゃねの?
そうこうしてる間に>>763さんのをヒントに自己解決したよ
^(?'blockhead'.*={2,})$\n(?'blockbody'(.*\n)*?)(?=.*={2,}\n)
>>763さんに感謝を
>>768は樹海に逝け
もし763=768なら感謝された後樹海に逝け
0774デフォルトの名無しさん
2011/01/14(金) 15:49:280775デフォルトの名無しさん
2011/01/14(金) 16:12:39という文がある時、文中のプリンタをプリンターになおすにはどのような正規表現を
用いればよいでしょうか?
0776デフォルトの名無しさん
2011/01/14(金) 16:15:410777デフォルトの名無しさん
2011/01/14(金) 16:17:31「プリンタ」を「プリンター」に置換
「プリンターー」を「プリンター」に置換
と2段階でやったもんさ。
0778デフォルトの名無しさん
2011/01/14(金) 16:19:23プリンター? -> プリンター
プリンタ -> プリンター & プリンターー -> プリンター
0779デフォルトの名無しさん
2011/01/14(金) 16:20:56プリンタ(?!ー)を使おうと思います。回答ありがとうございました。
0780デフォルトの名無しさん
2011/01/14(金) 16:45:45>>772が何を言いたかったのかは知らんがwチェッカーはいろいろ出てくるな
チェッカーがあっても>>772の頭じゃ使えないわけかw
可哀想になw>>772も>>773もwwwww
>>77
俺も考えるのがめんどくさいときはそうしてるw
0781デフォルトの名無しさん
2011/01/14(金) 16:46:010782デフォルトの名無しさん
2011/01/14(金) 19:06:47そうだったんですか、とても明快な回答ですっきりしました
元は、あるRFCに従ってパーサを書いていて、
そこだけ正規表現で楽が出来るのかなと思ったんですが
正規表現のが苦手なので
素直にBNFを書き下すことにしました
どちらにせよ有効なURIかは結局調べないとダメっぽいですね
特にエンコードがらみは大変そです
0783デフォルトの名無しさん
2011/01/14(金) 20:37:16>自己解決したよ
遅かったか。せっかく考えたんで参考までに
ヘッダー用
^((.+(?<=[^=]))={2,})\n
ボディ用
^(((.(?<!==))*\n)+)
フッター用
^(=+)\n
全体
(^((.+(?<=[^=]))={2,})\n^(((.(?<!==))*\n)+)){2}^(=+)\n
おまけ(ボディ)
={2,}を不許可
^(((.(?<!==))*\n)+)
行末以外の={2,}を許可
^(((.*(?<=[^=])=?)\n)+)
0784デフォルトの名無しさん
2011/01/14(金) 21:03:46^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
は、URIをprotocol、host、pathname、search、hashに分解するためだけのもの
有効なURIかを厳密にチェックするのはものすご〜く大変、以下参考
http://www.din.or.jp/~ohzaki/perl.htm
0785デフォルトの名無しさん
2011/01/14(金) 21:30:36「万能な正規表現」ってやつをいつか理解してみたいです
0787デフォルトの名無しさん
2011/01/23(日) 14:51:37本質的に有効かどうか(404などが出ない)というチェックは結局できてないんだから。
0788デフォルトの名無しさん
2011/01/23(日) 15:15:54仕様通りにURIがパース出来るかということと全く関係がない
0789デフォルトの名無しさん
2011/01/31(月) 00:02:08^\n$ ではだめなのでしょうか
0790デフォルトの名無しさん
2011/01/31(月) 00:37:140791デフォルトの名無しさん
2011/01/31(月) 00:46:010792デフォルトの名無しさん
2011/01/31(月) 21:59:27\n\rのみの行に対応できる?
0793デフォルトの名無しさん
2011/01/31(月) 22:19:32無視してもいいだろ。
0794デフォルトの名無しさん
2011/01/31(月) 23:02:050795デフォルトの名無しさん
2011/02/01(火) 09:12:37それ行として破綻してるだろ。
0796デフォルトの名無しさん
2011/02/02(水) 12:37:490797デフォルトの名無しさん
2011/02/02(水) 12:47:230798デフォルトの名無しさん
2011/02/02(水) 12:48:130799デフォルトの名無しさん
2011/02/02(水) 12:54:450800デフォルトの名無しさん
2011/02/02(水) 16:58:48うまいw
0801デフォルトの名無しさん
2011/02/02(水) 17:09:250802デフォルトの名無しさん
2011/02/03(木) 12:58:40という文章を、
AbcDef, GhiJkl ,MnoPqr
に変えたいのですが、どのような正規表現を書けばいいでしょうか?
0803デフォルトの名無しさん
2011/02/03(木) 13:04:44適当につかる言語で書いた方が早い
0804802
2011/02/03(木) 13:12:26ありがとうございます
0805デフォルトの名無しさん
2011/02/03(木) 13:29:00C#だと
var input="Abc_def, Ghi_jkl ,Mno_pqr";
Regex.Replace(input, "_([a-z])", i => i.Result("$1").ToUpper())
0806デフォルトの名無しさん
2011/02/03(木) 16:15:09>>4
0807デフォルトの名無しさん
2011/02/06(日) 17:49:31これってどういう意味を表している?
0808デフォルトの名無しさん
2011/02/06(日) 17:55:28すももももももももものうち の場合
(す)(ももももももももも)(の)(う)(ち)
とヒットするに違いない
0809デフォルトの名無しさん
2011/02/06(日) 18:01:40captureに全部食われるんじゃない
実質 (.+) と同じ。つまり空でない文字列
0810デフォルトの名無しさん
2011/02/06(日) 18:21:07そうなのか・・・
梟本で"=XX==========="に対して
'X(.+)+X'って正規表現を使ってたんだけど
イマイチ理解できなくて
0811デフォルトの名無しさん
2011/02/06(日) 18:25:21何版の何ページ?小見出しも教えてくれると助かる
0812デフォルトの名無しさん
2011/02/06(日) 18:25:39何ページくらい?
0813デフォルトの名無しさん
2011/02/06(日) 18:30:08第3版の第4章、4.1.5.2、p142-143
正規表現エンジンの判別による説明の件
0814デフォルトの名無しさん
2011/02/06(日) 18:30:360815デフォルトの名無しさん
2011/02/06(日) 18:37:04=XX===========
マッチしない
=XhhhooogggeeeX===========
hhhooogggeee にマッチ
=XすもももももももものうちX===========
すもももももももものうち にマッチ
0816815
2011/02/06(日) 19:03:06その正規表現はマッチさせるのが目的じゃなくて、
NFAだと時間がめちゃかかるよっていうことが伝えたい内容だね
だからわざとマッチさせずに
バックトラックするような例を選んであるのだと
0817デフォルトの名無しさん
2011/02/06(日) 19:25:59なんとなくわかるレベルの漏れが言うのもなんだけど
4章全部読んで足りなければ
オートマトンの載ってる教科書も読んだ方がいいと思うよ
フクロウ本はDFA/NFAの話をしてるのに図を載せてないのがネック
0818デフォルトの名無しさん
2011/02/06(日) 19:30:400819デフォルトの名無しさん
2011/02/08(火) 18:28:41やりたいことは置換で、VBのソースを編集したいのが目的です。
例:
・Before
Dim s1, s2, s3 As String
・After
Dim s1 As String, s2 As String, s3 As String
上記のように、1行で複数の変数宣言を行っている箇所で
型の宣言を省略している箇所を、最後の型宣言で補いたいのですが
どのように指定してやればよいでしょうか?
0820デフォルトの名無しさん
2011/02/08(火) 19:28:530821デフォルトの名無しさん
2011/02/08(火) 19:39:22Dim 識別子のリスト As 型名 → Dim 識別子1 As 型名, 識別子2 As 型名, ...
ってことじゃないか
識別子のリストの要素数が可変であれば
正規表現だけでやるのは厳しい気がするけどどうなんだろう
0822デフォルトの名無しさん
2011/02/08(火) 19:50:06>>821
その通りです
要素数も可変なんですが難しそうですか・・・
無理そうであればマクロを組もうかと思ってます
0823デフォルトの名無しさん
2011/02/08(火) 20:19:300824デフォルトの名無しさん
2011/02/08(火) 20:31:150825デフォルトの名無しさん
2011/02/08(火) 20:33:520826デフォルトの名無しさん
2011/02/08(火) 20:35:31要素数が可変じゃないならこんな感じのやり方は。
可変といっても種類はせいぜい多くても10種類ぐらいだろうから
この考え方で数パターン書いて対応すれば
/([^,]*)(,)([^,]*)(,)([^,]*)(,)(\s*As\s*)([a-z]*)/\1 as \8,\3 as \8,\5 as \8,\7\8/
Dim s1, s2, s3,s4 As Stringを
(Dim s1)(,)( s2)(,)( s3)(,)(s4 As )(String)と分解
0827デフォルトの名無しさん
2011/02/08(火) 20:47:19なるほど、そういった感じの正規表現をプログラムで動的に
例えば2〜10までのようにして繰り返しで組み上げて制御すれば
実現できそうです
0828デフォルトの名無しさん
2011/02/09(水) 15:07:12<html><body>abcdefg</body></html>のように間に挟まれたabcdefgだけを取り出すには
やはり
<html><body>(?<label>(\\w+))</body></html>
のようにグループ化を行って後から
Groups["label"].Valueで取り出すのがスマートな方法ですか?
C#です
実際はもっと長い文字列から抽出します
何かもっといいアイディアがありましたらご教授願います
0829デフォルトの名無しさん
2011/02/09(水) 18:04:26これを使えば、マッチ部分全体の取得だけで、挟まれた箇所を取り出すこともできる。
0830デフォルトの名無しさん
2011/02/09(水) 20:14:08ありがとうございます。早速調べて見ます。
0831デフォルトの名無しさん
2011/02/13(日) 00:50:36C++をC#にするにはどうすればよいですか
0832デフォルトの名無しさん
2011/02/13(日) 00:54:070833デフォルトの名無しさん
2011/02/13(日) 04:23:23C
●説明
Apacheのログから一部分を抜き出して検索したい
●対象データ
host.ne.jp - - [11/May/2011:12:22:15 +0900] "GET /~akasata/index.xml?gat=tPFnlVCP8aUYq8jjPqA=&BSdebug=AV/w3.3r1.1/ HTTP/1.1"
200 6703 "https://server.ne.jp/" "Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"
(以上1行)
●希望する結果
1件目
host.ne.jp
2件目
/~akasata/index.xml
以上のような検索を実装しようとして、
regerror(regcomp(&preg, "(.+) - [^[] \\[.+\\] \"[^\" ]+ ((/~akasata/[^\"]+)\\?g.+)*([^\"]+) [^\" ]+\".+", REG_EXTENDED|REG_NEWLINE), &preg, errbuf, sizeof(errbuf));
以下のような正規表現を用いた(Cのエスケープが混じっているため見辛ければすいません)のですが、
後ほど検索対象を調べて一部不要な部分があったため
regerror(regcomp(&preg, "(.+) - [^[] \\[.+\\] \"[^\" ]+ ((/~akasata/[^\"]+)\\?g.+) [^\" ]+\".+", REG_EXTENDED|REG_NEWLINE), &preg, errbuf, sizeof(errbuf));
以下のように正規表現を変更したところ、同じ結果を返すのにもかかわらず
実行速度が4倍以上もかかるようになってしまいました。原因かわかる方教えていただけないでしょうか?
0834デフォルトの名無しさん
2011/02/13(日) 18:53:26regcompとかの関数名から察するにregex.h使っていると勝手に推測する
んで、これはPOSIX準拠ってことでPOSIX NFAエンジンで動作していると思うけど
こいつは途中のオプションによってマッチしたとしても、引き続いて出来る限り
最長のマッチしたものを報告するように処理しまくる
前者と後者のパターンだと全走査する回数が違ってくるから
それで時間も変わっいるのでは?
0835デフォルトの名無しさん
2011/02/13(日) 18:56:50regex.hの内部動作が何なのかは推測の域はでないってことでご勘弁を
0836デフォルトの名無しさん
2011/02/16(水) 18:09:45javascript(各種ブラウザ(javascriptに対応している携帯端末も)で動かしたいです)
●検索か置換か?
検索
●説明
<foo bar="HOGE" baz="PIYO"> (または <foo baz="PIYO" bar="HOGE"> )で
要素fooの属性barの値がHOGEの場合の属性bazの値(この場合PIYO)を得たいのですが
属性barと属性bazの順番が不定なのでよくわかりません
どう書けばいいですか?
DOMなら自分にもわかるのですが正規表現だと難しくて詳しい人に頼るしかありません
/<foo\s(?:bar="HOGE"\sbaz="([^"]*)"|baz="([^"]*)"\sbar="HOGE")>/
等とするとキャプチャする括弧が二つになってしまって正規表現の外側での処理が必要になってしまって・・・
正規表現一回だけで完結するように書きたいです
さらに <foo bar="HOGE" baz="PIYO" qux="FUGA"> みたいな感じに
要素fooの属性barの値がHOGEでさらに属性quxの値がFUGAの場合の属性bazの値(この場合PIYO)を得たいのですが(こっちが本命です)
どう書けばいいですか?(この場合も属性の順番は不定です)
●対象データ
<foo bar="HOGE" baz="PIYO"> (または <foo baz="PIYO" bar="HOGE"> )
さらに <foo bar="HOGE" baz="PIYO" qux="FUGA"> みたいなのも(それぞれ別々で)
<foo>の前後に何か文字が入っていたり大文字か小文字かが不定だったり
「<foo>」が「<foo />」となっていたり「"」が「'」だったり場合によってはなかったり
属性の前後のスペースが複数あったり改行が含まれていたりするかもしれませんがそのへんは自分でなんとかできると思います
●希望する結果
PIYO
(baz属性(仮)の値(この場合PIYO(仮)))
0837デフォルトの名無しさん
2011/02/16(水) 18:25:040838デフォルトの名無しさん
2011/02/16(水) 18:28:360839デフォルトの名無しさん
2011/02/16(水) 18:30:25javascript使うなら素直に複数に分けて処理したほうが楽だよ
0840836
2011/02/16(水) 18:53:26正規表現マスターには簡単な問題で
自分がアホだからわからないんだと思っていました
(JavaScriptの正規表現では)どんなに頑張っても無理なんですね
>>839さんの言うとおり複数回に分けようと思います
0841デフォルトの名無しさん
2011/02/16(水) 19:12:40良書があれば教えてください
0842デフォルトの名無しさん
2011/02/16(水) 19:27:11http://www.oreilly.co.jp/books/9784873113593/
0843デフォルトの名無しさん
2011/02/16(水) 19:33:520844デフォルトの名無しさん
2011/02/16(水) 19:40:200845デフォルトの名無しさん
2011/02/16(水) 22:17:49フクロウ本持っていれば必要ないかな
0846デフォルトの名無しさん
2011/02/16(水) 23:56:370847デフォルトの名無しさん
2011/02/17(木) 14:20:11これはもちろん読んでいるんだろうな。
Compilers: Principles, Techniques and Tools by Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman (ISBN 0-201-10088-6)
0848デフォルトの名無しさん
2011/02/17(木) 17:01:10もう読んでるだろうけど「オートマトン言語理論計算論」。
0849841
2011/02/17(木) 19:52:57早速買って読んでみます
なんか正規表現する人って然りげ無くてかっこいいよね
余計なことは言わない、普段は無口だけど発する言葉は真意を付いている
そんな感じ
0851デフォルトの名無しさん
2011/02/20(日) 13:06:57.19゜∪゜
0852デフォルトの名無しさん
2011/02/20(日) 13:10:44.310853デフォルトの名無しさん
2011/02/21(月) 13:06:43.890854デフォルトの名無しさん
2011/02/21(月) 15:08:09.000855デフォルトの名無しさん
2011/02/21(月) 22:41:57.17レジックス?レギックス?レゲックス?レジクス?
0856デフォルトの名無しさん
2011/02/21(月) 22:47:41.730857デフォルトの名無しさん
2011/02/21(月) 22:58:59.220858デフォルトの名無しさん
2011/02/21(月) 23:24:27.380859デフォルトの名無しさん
2011/02/22(火) 00:31:11.790860デフォルトの名無しさん
2011/02/22(火) 10:51:11.090861デフォルトの名無しさん
2011/02/22(火) 16:52:04.420862デフォルトの名無しさん
2011/02/22(火) 19:26:38.030863デフォルトの名無しさん
2011/02/22(火) 20:32:08.240864デフォルトの名無しさん
2011/02/23(水) 02:01:04.560865デフォルトの名無しさん
2011/02/23(水) 19:59:15.01「<img」以外の「<」を「&lt;」に置き換えるにはどう書けば良いでしょうか?
#「img(中略)>」以外の「>」も「&gt;」に置き換える必要ありがますが、そちらはまた別途考えるとして。。
言語はPHPです。よろしくお願いします。
0866デフォルトの名無しさん
2011/02/23(水) 20:26:52.60<
とりあえず正規表現はこれ
PHPでどうやるかはわからん
0867デフォルトの名無しさん
2011/02/23(水) 20:29:14.890868デフォルトの名無しさん
2011/02/23(水) 20:29:54.530869865
2011/02/23(水) 20:38:31.16できました! ありがとうございます。
>#「img(中略)>」以外の「>」も「&gt;」に置き換える必要ありがますが、そちらはまた別途考えるとして。。
こっちも何かヒント頂けたら嬉しいです。ためしに
'/(?!<img[^>]*)>/';
とやってみましたが駄目でした
0870デフォルトの名無しさん
2011/02/23(水) 20:51:59.61(?!img)(.*)(>)
\1&gt;
0871865
2011/02/23(水) 22:06:05.47/(?!img)(.*?)>/ で判定かけてみたのですが、
文字列"01234>abcdefg<img src>"ですと
abcdefg<img src>
が引っかかってしまって、imgを含んでいても弾いてくれません。
単独の>、<を弾きつつ、imgの変換を除外するとなると、一発で判定するのは無理で、
(1) /(.*?)>/の判定後にimgが含まれていないか判定するか、
(2) /<(?!img)(.*?)>/ と(単独の>、<の変換を諦めて)セット<>で判定
でしょうか?
0872デフォルトの名無しさん
2011/02/23(水) 22:34:52.18ほかの人待ち
0873デフォルトの名無しさん
2011/02/23(水) 22:44:01.150874デフォルトの名無しさん
2011/02/23(水) 22:44:38.740875デフォルトの名無しさん
2011/02/23(水) 22:50:10.940876デフォルトの名無しさん
2011/02/23(水) 22:54:25.37あ、なるほど
0877デフォルトの名無しさん
2011/02/23(水) 23:10:16.82それだと元から>が合ったときに死ぬる
<img src="...>..." />
↓
<img src="...>..." />
↓
<img src="...>..." />
最初にアンパサンドを&に変換して最後に戻すとかしないと
0878デフォルトの名無しさん
2011/02/24(木) 00:03:15.27syntax err
0879デフォルトの名無しさん
2011/02/24(木) 03:43:12.62preg系で
'/(?!<img )<([^>]*)>/i'
'<\\1>'
0880デフォルトの名無しさん
2011/02/24(木) 04:19:37.11'/<(?!img )([^<>]*)>/i'
0881デフォルトの名無しさん
2011/02/24(木) 04:47:19.41ereg系(POSIX)も調べたけど、否定先読みが出来ない…orz
つー訳で、>>879-880のpreg系(PCRE)を使ってくれ
0882872
2011/02/24(木) 14:24:33.92<((?!img)[^<>]*)>
0883デフォルトの名無しさん
2011/02/24(木) 14:36:38.690884デフォルトの名無しさん
2011/02/24(木) 14:50:23.58\1>
一応、"<"より先に変換することを想定。後でも基本的に問題ないが
<img <> → マッチする
<img <> → マッチしない
という違いがある
0885デフォルトの名無しさん
2011/02/24(木) 16:09:25.08s/<([^\s]+)([^>]*)>/$1 eq 'img' ? "<$1$2>" : "<$1$2>"/eg
とかできるけどPHPでは出来ねぇの?
0886デフォルトの名無しさん
2011/02/24(木) 16:22:04.480887デフォルトの名無しさん
2011/02/24(木) 16:22:04.760888デフォルトの名無しさん
2011/02/24(木) 17:22:40.99>が引っかかってしまって、imgを含んでいても弾いてくれません。
>単独の>、<を弾きつつ
>(2) /<(?!img)(.*?)>/ と(単独の>、<の変換を諦めて)セット<>で判定
単独(タグ以外?)の「>」と「<」は、上を見ると、変換したくない意味に見えるし、
下を見ると、変換したいようにも見えるけど、最終的に、変換したいの?したくないの?
0889デフォルトの名無しさん
2011/02/24(木) 19:13:26.82単に/"[^"]*"/でマッチできるけど、文字列以外の部分をマッチさせるには
どうすればいい
0890デフォルトの名無しさん
2011/02/24(木) 19:28:22.18意味分かんない
0891デフォルトの名無しさん
2011/02/24(木) 19:40:27.100892デフォルトの名無しさん
2011/02/24(木) 19:49:09.220893デフォルトの名無しさん
2011/02/24(木) 19:55:28.39>>891の場合、文字列は「CD」「EF」「CD"EF」のどれなのか分からん
0894デフォルトの名無しさん
2011/02/24(木) 21:15:35.800895デフォルトの名無しさん
2011/02/24(木) 21:33:17.32ダークマターでもひっかけるのか
0896デフォルトの名無しさん
2011/02/24(木) 21:34:54.19むしろ正規表現が文字列以外の何にマッチするのかと。
というのは置いておいて、多分「文字列変数」のことなんだろうな。
それを踏まえて、「『文字列変数を囲むダブルクォーテーション』以外の
ダブルクォーテーションにマッチさせたい」とエスパーしてみたがどうか。
0897デフォルトの名無しさん
2011/02/24(木) 21:47:02.96irb(main):001:0> 'AB"CD"EF"'.split(/"[^"]*"/)
=> ["AB", "EF\""]
0898デフォルトの名無しさん
2011/02/25(金) 10:59:37.12「文字列変数」は初めて聞いた。おらっちの地方では「文字列リテラル」って言うな。
0899デフォルトの名無しさん
2011/02/25(金) 12:42:46.26で、コード上の定数操作ならリテラル
0900デフォルトの名無しさん
2011/02/25(金) 12:47:45.340901デフォルトの名無しさん
2011/02/25(金) 13:26:47.640902デフォルトの名無しさん
2011/02/25(金) 18:28:37.60文字列リテラル→文字列定数→文字列の定数
文字列変数→文字列の変数
つまり>>896が言ってることはperlとかでやる
$hoge = "hoge";
$fuga = "$hoge\n";
変数を含んでいる"$hoge\n"を除外して"hoge"にマッチさせたいとエスパーしてみたがどうか
0903デフォルトの名無しさん
2011/02/25(金) 22:37:32.420904デフォルトの名無しさん
2011/02/25(金) 23:48:54.060905デフォルトの名無しさん
2011/02/26(土) 02:28:08.03^[1-9]\d{3}$
PHPのpreg_matchでいえば
preg_match (/^[1-9]\d{3}$/, $subject)
●正規表現の使用環境
PHP 5.2
●検索か置換か?
検索
●説明
4桁の西で0000のみを除外したい。
西暦1万年(10000)以上は考慮しない
0000 ×
1000〜9999 ○
●対象データ
説明の項を参照
●希望する結果
説明の項を参照
0906デフォルトの名無しさん
2011/02/26(土) 02:31:13.63^[0][1-9]$|^[1-9]\d$
PHPのpreg_matchでいえば
preg_match (/^[0][1-9]$|^[1-9]\d$/, $subject)
●正規表現の使用環境
PHP 5.2
●検索か置換か?
検索
●説明
2桁の月で00のみを除外したい。
00 ×
01〜12 OK(13〜99は他の方法で除外しています)
●対象データ
説明の項を参照
●希望する結果
説明の項を参照
0907デフォルトの名無しさん
2011/02/26(土) 02:34:13.55>4桁の西で0000のみを除外したい。
>西暦1万年(10000)以上は考慮しない
>0000 ×
>1000〜9999 ○
0001は?
と言うか、そのままで良いじゃんって、
もしかして0001〜0999を○にしたいって話?
0908デフォルトの名無しさん
2011/02/26(土) 02:37:41.92^(\d{1,6})(\.\d+)?$
PHPのpreg_matchでいえば
preg_match (/^(\d{1,6})(\.\d+)?$/, $subject)
●正規表現の使用環境
PHP 5.2
●検索か置換か?
検索
●説明
整数部が6桁までの数値を許可。
小数点を含む入力を許可。
小数点以下は特に制限しない(DB側の丸め処理に依存)
1234567 ×
123456. ×
123456.1 _OK
1.1 OK
0.12・・89 _OK
●対象データ
説明の項を参照
●希望する結果
説明の項を参照
0909デフォルトの名無しさん
2011/02/26(土) 02:39:09.32いえ、実データは
0000、1990〜2010(+今年度以降の西暦)
なので、0000さえ除外できれば仕様を満たしています。
0910デフォルトの名無しさん
2011/02/26(土) 02:43:15.50だったら何を聞きたいの?
0911デフォルトの名無しさん
2011/02/26(土) 02:47:08.82web上で確認出来る以下のサイトでも期待した結果は得られましたが、
正規表現に不慣れなので漏れが無いかどうかを確認したくて書き込みました。
HiFi Regex Tester - Live JavaScript Regular Expression Tester
ttp://www.gethifi.com/tools/regex
Regex Tester ? RegexPal
ttp://regexpal.com/
洗練された書き方や、不備がある場合、指摘をいただければ幸いです。
0912デフォルトの名無しさん
2011/02/26(土) 02:52:57.55これも通るけどOK?
01.1
0.10
あと、これが通らないけどOK?
.5
まぁ対象がDBなら、変な値は返って来ないから、あまり問題にならないと思うけど
書き込みにも使うなら、気を付けた方が良いかも
0913デフォルトの名無しさん
2011/02/26(土) 02:55:37.89>^[0][1-9]$|^[1-9]\d$
除外してるなら良いのかも知れんが、わざわざ20〜99を通さなくても良いのでは?
0914デフォルトの名無しさん
2011/02/26(土) 03:08:58.66>>912
通るパターン、通らないパターン、ともにOKです。
常に整数部が存在する数値です。
0.10もOKです。整数部が0である問題はありません。
>>913
確かにその通りですね。せっかく正規表現を使っているので以下のようにします
^[0][1-9]$|^[1][0-2]$
0915871
2011/02/26(土) 11:20:10.31お返事遅れてすみません
>下を見ると、変換したいようにも見えるけど、最終的に、変換したいの?したくないの?
単独の<、>は変換したいです。<img>のタグだけ変換せずに残しておきたいです。
0916デフォルトの名無しさん
2011/02/26(土) 11:28:26.01から((AB:CD))を判定するには、
/[\(]{2}(.*?):(.*?)[\)]{2}/
でうまく行くのですが、これに\を使って例外を作りたいです。
文字列"…((AB:CD))…((EF\:GH))…"
からコロンの前の円マーク「\:」の組み合わせを除外して
((AB:CD))だけを判定するにはどのように記述すればよいでしょうか?
/[\(]{2}(.*?)(?!\\):(.*?)[\)]{2}/
ではうまく行きません。
0917デフォルトの名無しさん
2011/02/26(土) 11:32:31.110919デフォルトの名無しさん
2011/02/27(日) 12:25:47.70自分で使うときもたまに間違う
0920デフォルトの名無しさん
2011/02/27(日) 13:03:23.04先後読みは更に分かりにくいだろうし、簡単な行頭行末(^$)で
ゼロ幅の空行が一致する事をそれとなく教えればいいんじゃない
0921デフォルトの名無しさん
2011/02/27(日) 17:41:22.56ただし text がない<p></p>はそのままで。
'/<p>(.+?)<\/p>/is', '<h3>$1</h3>'
ここから進まない… 助けて
0922デフォルトの名無しさん
2011/02/27(日) 17:49:23.170923デフォルトの名無しさん
2011/02/27(日) 18:20:54.14> text がない<p></p>はそのまま
であれば単純に正規表現使うまでもなく
<p>text</p> を <h3>text</h3>に置換すりゃいいんじゃないの
textの後に任意の文字は可、とかなら話は別だけど
0924デフォルトの名無しさん
2011/02/27(日) 18:26:33.46助かったぜ
textはリテラルではなく任意のテキストという意味かと
0925921
2011/02/27(日) 18:44:52.20そそ、定数じゃなくてタグを一気に変換させたいのね。
終了タグがない<p>や
中身(テキスト)のない<p></p>
はそのままにして置きたいの。
ちなみにPHPで
$str = preg_replace('/<p>(.+?)<\/p>/is', '<h3>$1</h3>', $str);
で数時間止まっている…
0926デフォルトの名無しさん
2011/02/27(日) 18:46:40.070927デフォルトの名無しさん
2011/02/27(日) 19:54:58.501回目
<p>(?!</p>)
<h3>
2回目
(?<!<p>)</p>
</h3>
0928デフォルトの名無しさん
2011/02/27(日) 20:04:00.530929デフォルトの名無しさん
2011/02/27(日) 20:19:55.58<p></p><p>ここまでは無難</p>
<p>閉じ忘れ段落<p>
</p><p> < を < と書いてない段落も実はある</p>ブロック外文字列<p>
</p>
EOT;
もし元がこんなのだったらパースしそう。
0930デフォルトの名無しさん
2011/02/28(月) 09:24:46.95<p>(((?!<\/?p>).)+)<\/p>
0931デフォルトの名無しさん
2011/02/28(月) 21:29:39.35http://kamome.2ch.net/test/read.cgi/police/1298822430/
0932デフォルトの名無しさん
2011/03/02(水) 15:45:24.49●正規表現の使用環境
VBScript
●検索か置換か?
検索
●説明
メールアドレスをチェックしたい
1.メールは1つか、複数
2.複数メールはカンマで区切られる
3.カンマの直後にスペースが入るかも
4.メールの@以降は固定(間違って変な宛先に送らないため)
5.@より前はてきとう
つづく
0933デフォルトの名無しさん
2011/03/02(水) 15:45:37.70●対象データ
[email protected] ←1つだけの場合
[email protected], [email protected], ...(以下、繰り返し) ←複数の場合
●希望する結果
True または False
●↓ここまでやって力尽きました。。orz
Function blnMailCheck(strMailAddress)
Dim objRE
Set objRE = new RegExp
objRE.IgnoreCase = True
'以下のパターンが今回質問したいところです
'イメージとしては、メールが1回以上、各メール間に「,」を1つと直後にスペースを0回以上出現
objRE.pattern = "^(.*@example.com),+$"
blnMailCheck = objRE.Test(strMailAddress)
Set objRE = Nothing
End Function
0934デフォルトの名無しさん
2011/03/02(水) 17:41:31.90・何をどこまでチェックしたいのか
・使用できる文字の範囲
によって変わってくると思うけど、なるべく単純にするとこんな感じ?
^([-.a-z0-9][email protected], *)*[-.a-z0-9][email protected]$
>5.@より前はてきとう
適当バージョン
^([^ @][email protected], *)*[^ @][email protected]$
0935デフォルトの名無しさん
2011/03/02(水) 17:58:18.42・何をどこまでチェックしたいのか
たとえば、以下のようにメールアドレスが入力された場合は、
個々のメールの@以下がすべて、「@example.com」であれば
Trueである、としたいです。
[email protected], [email protected]
しかし、実際はメールが1つしか入力されない場合や、
カンマの直後にスペースがあったりなかったりします。
・使用できる文字の範囲
@より前はなんでもいいです。(送信に失敗するだけなので)
@以降は、「@example.com」固定にしたいです。
よろしくお願いいたします。
0936デフォルトの名無しさん
2011/03/02(水) 18:09:29.61すみません、そのパターンは2つとも、
「-1」という結果が返ってきてしまいました。
引数は「[email protected]」のみです。
もう一度、明日確認してみます。m(__)m
0937デフォルトの名無しさん
2011/03/02(水) 18:19:56.83お前さんは何か勘違いしている
正規表現の前にvbsの使い方を覚えるぺき
0938932
2011/03/02(水) 18:50:51.25パターンを「.*」のようにすればtrueが返ってくるので、
あとは適切なパターンを指定してあげるだけかと思ったのですが…
「文字列がメールアドレスかどうか判定する」
という正規表現ならググるといくつかヒットするので、
私のやりたいこともできるかも?と思った次第です。
この考え方がそもそも間違っているのでしょうか?(/ _ ; )
もしよろしければ、どこらへんを勘違いしてるかを
指摘していただけると、とてもとても助かりますm(_ _)m
0939934
2011/03/02(水) 18:56:16.94えーと、あなたのサンプルプログラムに>>934で挙げた正規表現をはめ込み、
MsgBox blnMailCheck("[email protected]")
みたいにしたら、Trueと出たけど?
VBScriptのリファレンスで、Regular Expression オブジェクトのTest メソッドを見ても、
>Test メソッドは、パターンに一致する文字列が見つかると True、見つからないと False を返します。
となってるし??
私にはこれ以上分かりませぬ。
一応…適当バージョンで@より前位置のカンマも不可ならこんな感じ。
^([^ ,@][email protected], *)*[^ ,@][email protected]$
0940932
2011/03/02(水) 19:33:16.76なるほど!!
呼び出し元がおかしいってことですね。
丁寧な説明、リファレンスまで調べていただき、
大変なお手間を取らせてしまいごめんなさい。
おっしゃる通りVBScriptはまだまだ経験が浅いです(>_<)
今回のことをきっかけにして頑張っていきたいと思います。
今回は本当に勉強になりました。
どうもありがとうございました!
0941デフォルトの名無しさん
2011/03/02(水) 21:57:15.32vbsで-1はTrueだ
覚えておくように
0942デフォルトの名無しさん
2011/03/02(水) 23:26:48.73それにしてもVBSってLike演算子ないのか
0943932
2011/03/03(木) 06:04:41.74!?(・_・;? -1はFalseだとばかり思い込んでました…
ご指摘ありがとうございます!
>>942
そんな方法もいけるんですね
もっと発想を柔らかくしないとなぁ
ご意見ありがとうございます(^-^)/
0944934
2011/03/03(木) 06:29:13.17すまん、ドットに\を付け忘れてたことに気付いた。
^([^ ,@]+@example\.com, *)*[^ ,@]+@example\.com$
ついでに…
どうやって-1を目撃したのか見当つかないけど、以下は読んでおいてね。
VBScript ユーザーズ ガイド - VBScript の基本 - VBScript のデータ型
0945932
2011/03/03(木) 12:27:23.67WScript.Echo blnMailCheck(strMailAddress)
↑で結果を確認してました…
素直にIf を使っていれば良かったorz
教えていただいたサイトをじっくり読んでみます!
ありがとうございました(^-^)/
0946デフォルトの名無しさん
2011/03/04(金) 16:59:16.71例えば
'5d8ce34a7dbaab'
を
['5d', '8c', 'e3', '4a', '7d', 'ba', 'ab']
というリストにしたい場合
([0-9A-Fa-f]{2}){7}
じゃだめなんでしょうか?
0947デフォルトの名無しさん
2011/03/04(金) 19:13:56.93分解してないじゃん
0948デフォルトの名無しさん
2011/03/04(金) 19:36:45.66リストに分割するとかそんな機能は持ってない
Pythonだったら
import re
re.findall(r'[0-9a-fA-F]{2}', '5d8ce34a7dbaab')
Rubyだったら
'5d8ce34a7dbaab'.scan(/[0-9a-fA-F]{2}/)
0949946
2011/03/04(金) 21:39:54.16ありがとうございます
wxRegEx を使っています
wxRegEx re("([0-9a-fA-F]{2}){7}", wxRE_ADVANCED | wxRE_ICASE);
re.Matches(str);
とやっても
re.GetMatchCount()
の数が変なんです
wxRegEx re("([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})", wxRE_ADVANCED | wxRE_ICASE);
re.Matches(str);
なら
re.GetMatchCount() == 7
になるみたいなのですが
そんなもんなんでしょうか?
0950デフォルトの名無しさん
2011/03/04(金) 21:41:05.83re.GetMatchCount() == 8
の間違いです
0951デフォルトの名無しさん
2011/03/04(金) 21:48:02.43[0-9a-fA-F] は [0-9a-f] にして i オプション使ったほうが見やすいと思う
0952デフォルトの名無しさん
2011/03/04(金) 21:48:08.480953デフォルトの名無しさん
2011/03/04(金) 22:11:16.32http://docs.wxwidgets.org/stable/wx_wxregex.html#wxregexmatches
最低限のメソッドしかないみたいだから自前でループで回すしかないだろう
[0-9a-fA-F]{2}を文字列にマッチさせる
マッチした分だけ文字列へのポインタを先に進める
くりかえし
0954デフォルトの名無しさん
2011/03/04(金) 22:30:48.27ありがとうございます
思い違いをしていたみたいです
ループは自分でやらないといけないんですね
0955デフォルトの名無しさん
2011/03/04(金) 23:17:30.13これでうまくいったみたいです
ほんとうにありがとうございました
wxArrayString FindAll(const wxRegEx &re, const wxString &str)
{
wxArrayString as;
for(wxString s = str; re.Matches(s); s = s.Mid(re.GetMatch(s, 0).length()))
for(size_t i = 1; i < re.GetMatchCount(); i++)
as.Add(re.GetMatch(s, i));
return as;
}
ちなみに exe ファイルのサイズは FindAll を使う前に比べて 512 バイト増えました
速度差は調べていません
0956デフォルトの名無しさん
2011/03/05(土) 00:36:13.620957デフォルトの名無しさん
2011/03/05(土) 00:45:20.51スレ間違えてるぞ
0958デフォルトの名無しさん
2011/03/05(土) 09:58:12.85javaで、replaceAll("XXX.*YYY", "")
このようなコードを書いてるんですが、対象が複数ある場合にうまくいきません。
AAAXXXBBBYYYCCCXXXDDDYYYEEE
AAACCCEEE ←このように変換したい
AAAEEE ←こうなってしまう
最初のXXXと最後のYYYで認識されてしまってるようなんですが、どのようにすればよいでしょうか
0959デフォルトの名無しさん
2011/03/05(土) 10:11:33.97すみません。自己解決しました。
0960デフォルトの名無しさん
2011/03/05(土) 16:30:42.260961デフォルトの名無しさん
2011/03/05(土) 17:47:01.880962デフォルトの名無しさん
2011/03/06(日) 08:59:14.880963デフォルトの名無しさん
2011/03/06(日) 13:42:42.280964デフォルトの名無しさん
2011/03/06(日) 14:08:17.33しがみつくものだ
0965デフォルトの名無しさん
2011/03/06(日) 14:52:12.700966デフォルトの名無しさん
2011/03/07(月) 22:00:02.040967デフォルトの名無しさん
2011/03/11(金) 08:15:56.220968デフォルトの名無しさん
2011/03/14(月) 19:06:44.98Perl
●検索か置換か?
置換
●説明
重複する文字列と区切り文字を削除したい
●対象データ
aaa;bbb;ccc;bbb;あああ;aaa;あああ;いいい
●希望する結果
aaa;bbb;ccc;あああ;いいい
よろしくお願いします
0969デフォルトの名無しさん
2011/03/14(月) 19:20:50.550970デフォルトの名無しさん
2011/03/14(月) 19:27:38.40my $a = 'aaa;bbb;ccc;bbb;あああ;aaa;あああ;いいい';
my %a;
$a =~s/([^;]+);?/$a{$1}++==0?$&:''/ego;
0971デフォルトの名無しさん
2011/03/14(月) 19:45:47.43区切り文字が削除されていない。
0972デフォルトの名無しさん
2011/03/14(月) 20:54:16.83ありがとうございます
やってみます
>>971
説明が間違ってました
●希望する結果のほうであってます
0973デフォルトの名無しさん
2011/03/15(火) 12:10:55.80my $s = "aaa;bbb;ccc;bbb;あああ;aaa;あああ;いいい";
my %seen;
$s = join ";", grep { !$seen{$_}++ } split /;/, $s;
0974デフォルトの名無しさん
2011/03/15(火) 15:15:44.19linux コマンドラインの grep
●検索か置換か?
検索
●説明
末尾が一致していて途中が違う文字列のうち、特定のパターンを除去した集合を取得したい
●対象データ
aaabbbcccあああいいい
aaabbbcccううういいい
aaabbbcccえええいいい
●希望する結果
aaabbbcccううういいい
aaabbbcccえええいいい
「説明」がうまく書けないのですが。
よろしくお願いします
0975デフォルトの名無しさん
2011/03/15(火) 15:23:30.710976974
2011/03/15(火) 15:38:21.24助かりました。ありがとう。
0977デフォルトの名無しさん
2011/03/15(火) 17:34:57.18これと同じ事をBREGEXP DLLを使った正規表現置換でやりたいのですが可能でしょうか?
0978デフォルトの名無しさん
2011/03/19(土) 19:03:20.06>>970も>>973もマッチだけでは完結してない
つまり正規表現を使う何らかのプログラミング言語のコードが必要
0979デフォルトの名無しさん
2011/03/22(火) 23:58:13.690980デフォルトの名無しさん
2011/03/23(水) 00:02:06.70それを展開して処理することはできますか?
$moji = "123";
$hoge = "12\d";
if($moji =~ /$hoge/){
print "一致";
0981デフォルトの名無しさん
2011/03/23(水) 00:31:35.14危険だと思う。
レス数が950を超えています。1000を超えると書き込みができなくなります。