正規表現道場 Part2 (393レス)
上下前次1-新
88: 2014/01/24(金)01:21 ID:??? AAS
うーむ、オートマトンの勉強というか、まだ触りしか学んでないんだが
既に文字列否定の正規表現を簡単に作れるようになってしまった。
チャリの運転と同じで、一旦出来るようになるとなんてことないね。
89: 2014/01/24(金)05:08 ID:??? AAS
(次のお題)
abc かつ def を含まない文字列を表す正規表現を作れ。ただし先読みはNG。
90(1): 2014/01/25(土)14:00 ID:peRg4Ln+(1) AAS
お題が提示されておりますが、質問よろしいでしょうか。
言語は Java(Android開発) です。
やりたいことは、
・'a', 'b', 'c', '*' の4つの文字が使われた文字列を分割する
・'a*', 'b*', 'c*' は1文字として扱い、'*'のみの物は無い
になります。
例えば "aba*cb*" の場合は
a
b
a*
省4
91(1): 2014/01/25(土)17:37 ID:VUYYCfMh(1) AAS
([abc]\*?)
92(1): 2014/01/26(日)00:17 ID:??? AAS
このスレは道場と名の付いてる通り正規表現のスキルアップを目指すスレです。
糞質問・キチガイは↓こちらにお願いします。
Regular Expression(正規表現) Part12
2chスレ:tech
93: 90 2014/01/26(日)13:40 ID:??? AAS
>>91
ありがとうございました。勉強になります。
>>92
>>1も読めない糞は2chには向いていないと思うよ。
もう何十年も居座っていると予想されるが、そろそろ自覚しなよ。
94: 2014/01/26(日)23:09 ID:??? AAS
ここはもう荒らしの本拠地になってるから仕方がないよ。
わざわざ煽りにム板まで出張してきてるし。
95: 2014/01/27(月)00:48 ID:??? AAS
こちらは精神異常者の隔離スレとなっております
96: 2014/01/27(月)05:05 ID:??? AAS
じゅんじゅんのきまぐれ
外部リンク:d.hatena.ne.jp
おや、あわわさんとやらが俺の代わりに知らせに行ってくれてたのか。
あわわさん乙。ありがとう。
正規表現 Part11
2chスレ:tech
ってあれ?あわわさんのほうが6時間早い。CPU時計の時差?
97: 2014/01/29(水)03:59 ID:??? AAS
レベル高いスレにただいま。
98: 2014/01/29(水)04:05 ID:??? AAS
荒らしの住み処
ただのクソスレ
99(1): 2014/01/29(水)05:11 ID:??? AAS
ところで向こうの267は雑技たんなのかな?266、雑技のネタに使ってもよかですたい。
100(1): 2014/01/29(水)08:45 ID:??? AAS
>>99
当たりw
266の書き方は考えたけど,今回のケースでは267の書き方で大丈夫と考えた.
そういや質問者は「1」を含まないって書いてあるのに,なぜ「123」? とは思ったなw
後ろに他の正規表現を続けたりするとバックトラックして,
271の通りの可能性があるから初心者には266の方がいいのは確か.
ただ,他にもいろいろ考え出すと,最も内側のものだけ削除したいのなら,
ABC(?:(?!123|ABC|DEF).)*DEF
と書いた方がいいとかもある.
ちなみに266のミソは↓の辺りで微妙に使っていたりする.
省1
101(1): 2014/01/29(水)15:23 ID:??? AAS
>>100
ああ、考えてみればABCも入れたほうがいいね。質問者の対象データが対になってる
データだったから必要性を感じなかったが入れるべきだった、さすが雑技たん。
>なぜ「123」?
1というのは実データとは違う省略形と考えた。
初心者には文字と文字列の違いが分からないから文字列のつもりで1と書いてしまった
可能性がある。そこで文字列に対応しておけば1文字にも対応出来るってわけ。
>ABC(?:(?!123|ABC|DEF).)*DEF
これが基本形やね。高速化するなら*+とか、もっとやるなら[^1AD]*+使ってごちゃごちゃ書いたり。
>NoEnd
省2
102(1): 2014/01/30(木)00:29 ID:??? AAS
>>101
>1というのは実データとは違う省略形と考えた。
なるほど.確かに,初心者ほど状況説明が下手だからね.
>それと <\2> だと <font> になってしまうで・・ <\2\b やね。
単純なミスだな.指摘ありがとう.
103(2): 2014/01/30(木)07:11 ID:??? AAS
・範囲内で文字列を含まない正規表現
$_ = "zzzABC XYDEFzzDEFz";
if ( m/
# Perl 5.10 以降で有効
ABC
[^XAD]*
(?:
(?!XYZ|ABC|DEF).
[^XAD]*
)*
省10
104(1): 2014/01/30(木)13:46 ID:??? AAS
修正乙の後でアレなんだけど、実際に動かしてみたらだいぶおかしいから手直ししてみたよ、と。
while ($html =~ /
<(NOBR|CODE|B|PRE|FONT)\b
(?=
(
(?:(?!<\/\1>).)*?
(?:<\1\b|$)
)
)
/sixg
省7
105(1): 2014/01/31(金)02:30 ID:??? AAS
>>103
(*VERB:ARG) ってのは知らなかったなぁ.
今回のケースだと(*PRUNE)は(?>pattern)で置き換えができると思うが,
マニュアルの 「(*PRUNE) は (?>pattern) 単独では表現できないケースを扱うために使えます。」ってのがどういうケースなのか想像できん.
>>104
修正ありがと.
元のやつだと後ろを吸い込んじゃうからマッチ位置が先に進んでしまう.
そうならないように先読みを使うと,先読み部分は後方参照に含まれなくなるから,先読みの中で改めて補足が必要って感じだね.
106(1): 2014/01/31(金)04:37 ID:??? AAS
>>105
>単独では
・・・ ( ・・・ (*PRUNE) )
みたいに ( ) で分断されてる場合とか? (?> だと2つ以上必要になる。
>マッチが先に
当たり〜。printのとこは""の中にまとめて書いても大丈夫だったのか、勉強になりますた。
改めて修正乙。
107(1): 2014/01/31(金)10:29 ID:??? AAS
>>103
「XYZとDEFの競合」ってのはXYZの後半部分がDEFの前半部分と同じ場合ってことかな?
例えば,xydとdef,とか,xdeとdefみたいな
もしそういう,後半部分と前半部分が重なる場合を考え出すと,話がもう少しややこしくなる.
つまり,ABCDとCDEFがキーだったときに,ABCDEFという文字があったら,
それはABCD+EFと解釈するのか,AB+CDEFと解釈するのか,という問題.
その解釈がすべて前方優先なのか,すべて後方優先なのか,それともキーの相互の優先度で決まるのか,
あるいは,あらゆる可能性を許すのか,あらゆる可能性を許さないのか.
キー自身が重なる場合もある.
例えば,ABCABみたいなキーだったとき,ABCABCABは,ABCAB+CABなのか,ABC+ABCABなのか.
上下前次1-新書関写板覧索設栞歴
あと 286 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s