正規表現 Part8
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/03/26(土) 00:38:06.48質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。
正規表現 Part7
http://hibari.2ch.net/test/read.cgi/tech/1268979408/
0951デフォルトの名無しさん
2011/12/09(金) 22:03:58.64正規表現についてそのような小手先技を極めるよりも、本質的に正規表現はプログラム目的でもないしそのような言語でもないってことをまず理解した方がいい
0952デフォルトの名無しさん
2011/12/09(金) 22:38:02.19プログラム組んだ方が速くて簡単ならそっちがいい。
0953デフォルトの名無しさん
2011/12/09(金) 22:59:48.66小手先でも生産性が低くても別にいいじゃない
今回みたいに反面教師にもなるわけだし
0954デフォルトの名無しさん
2011/12/09(金) 23:15:21.080955デフォルトの名無しさん
2011/12/10(土) 01:03:53.46C#
●検索か置換か?
置換
●説明
文字列の中間にある数字を検索して置き換えたい。
●対象データ(ex.)
hogehoge-123.txt → hogehoge-num.txt
hogehogex-123.doc → hogehogex-num.doc
0956デフォルトの名無しさん
2011/12/10(土) 01:10:35.52まず、「文字列の中間」を定義してください
0957デフォルトの名無しさん
2011/12/10(土) 01:13:13.87この数字があるかないかの確認はすでに済ませてあります。
0958デフォルトの名無しさん
2011/12/10(土) 01:16:46.27検索: -\d+\(?=.[a-z\d]+$)
置換: -num
0959デフォルトの名無しさん
2011/12/10(土) 01:17:29.010961デフォルトの名無しさん
2011/12/10(土) 01:36:26.03ありがとー!
0962デフォルトの名無しさん
2011/12/10(土) 07:35:12.31ABCこの間に文字列があったりなかったりDEF
結果
DEF
"ABC"よりも後続にある(最初の)"DEF"だけを対象としたいです
戻り読み条件が、長さ一定でなくてもOKならばできるのですが・・・
0963デフォルトの名無しさん
2011/12/10(土) 08:48:42.15ABC.*?(DEF)
0964デフォルトの名無しさん
2011/12/10(土) 09:04:23.43ABC.*?\KDEF
0965デフォルトの名無しさん
2011/12/10(土) 09:38:11.060966デフォルトの名無しさん
2011/12/10(土) 10:09:40.90つ\s+正規表現の入門書
0967デフォルトの名無しさん
2011/12/10(土) 13:20:46.810968デフォルトの名無しさん
2011/12/10(土) 13:56:35.94[⊃|つ]\s+正規表現の入門書
0969デフォルトの名無しさん
2011/12/10(土) 14:28:53.54可変長の戻り読みが可能で(\Kより前をマッチ文字列に含めない)、置換操作で同じ文字列の置換をさせないことができる
s/(foo)bar/$1/g
s/foo\Kbar//g
0970デフォルトの名無しさん
2011/12/10(土) 14:59:24.060971デフォルトの名無しさん
2011/12/10(土) 16:15:10.95Perl 5.10以降とかpcreとかboost regexとか。
あとは>>192とか。サクラエディタではまだうまく動かないんだっけ?
0972デフォルトの名無しさん
2011/12/10(土) 16:47:26.370973デフォルトの名無しさん
2011/12/10(土) 16:51:02.92別物だろ。
0974デフォルトの名無しさん
2011/12/10(土) 18:29:05.11中身のことだろ?
0975デフォルトの名無しさん
2011/12/10(土) 22:34:32.09こういう馬鹿って何のために生きてるんだろうなぁ。
0976デフォルトの名無しさん
2011/12/10(土) 23:00:08.72ところでおまえは何のために生きてるんだ?
0977デフォルトの名無しさん
2011/12/10(土) 23:20:49.650978デフォルトの名無しさん
2011/12/10(土) 23:24:10.29http://ideone.com/clone/ej7Xf
0979デフォルトの名無しさん
2011/12/10(土) 23:27:34.36みなさん、私の事をマッチと呼んでくさ(ry
0980デフォルトの名無しさん
2011/12/10(土) 23:29:23.820981デフォルトの名無しさん
2011/12/10(土) 23:30:13.030982デフォルトの名無しさん
2011/12/10(土) 23:33:17.650983デフォルトの名無しさん
2011/12/10(土) 23:34:20.560984デフォルトの名無しさん
2011/12/10(土) 23:35:58.63http://hibari.2ch.net/test/read.cgi/tech/1322908056/l50
0985デフォルトの名無しさん
2011/12/10(土) 23:36:10.990986デフォルトの名無しさん
2011/12/11(日) 00:07:09.56s/近藤[ ]*?正彦/マッチ/g
0987デフォルトの名無しさん
2011/12/11(日) 00:26:56.15C#を初めて使った。括弧対応取れるだけの気がする。
http://ideone.com/CwPky
0988デフォルトの名無しさん
2011/12/11(日) 01:08:01.91基本的な学習すらしないで人に聞いて済まそうという姿勢は頂けない。
0989デフォルトの名無しさん
2011/12/11(日) 02:35:31.34bison(バイソン)とは構文解析器を生成するパーサジェネレータの一種であり、CコンパイラとしてのGCCのサポートのために[要出典]開発されたフリーソフトウェアである。
http://ja.wikipedia.org/wiki/Bison
ANTLR(ANother Tool for Language Recognition)とは、LL(k)構文解析を用いたパーサジェネレータである。
http://ja.wikipedia.org/wiki/ANTLR
Coco/R は、対象となる言語の属性付き文法を入力とし、その言語の字句解析器と構文解析器を生成するパーサジェネレータである。
http://ja.wikipedia.org/wiki/Coco/R
0990デフォルトの名無しさん
2011/12/11(日) 02:58:24.830991851
2011/12/11(日) 06:42:36.51(?!(?>\(+\g<項>\)+)(?!\g<演>)|(?>\g<項>)(?!\g<演>))(?<!\(|\g<演>)(?:\g<項>|\g<カ>)
(?>(?:\g<演>(?:\g<項>|\g<カ>))*)(?!\g<演>|\))(?<項文字>
[^\x00-\x20\-+*/=()<>]
){0}(?<項>(?<!\g<項文字>)(?>\g<項文字>
{1,30}
)(?!\g<項文字>)){0}(?<演>[\+\*]){0}(?<カ>\((?:\g<項>|\g<カ>)(?:\g<演>(?:\g<項>|\g<カ>))*\)){0}
3行目で項に使える文字を設定出来ます。↑の設定では以下の文字を使えなくしてます。
・アスキーコード表での16進数の00番から20番までの文字(改行や半角スペースなど)
・-、+、*、/、=、(、)、<、> の9文字
他に項の文字として含まれては困る文字があったら [^ ] の中に追加していって下さいね。
例、[^\x00-\x20\-+*/=()<>あいうえお] ← あいうえおの5文字が項を構成する文字から追加で除外されます。
5行目では1つの項の文字の長さを設定出来ます。上の設定では1文字以上30文字以下に設定してあります。
0992851
2011/12/11(日) 07:21:44.82>項には1-9の数字一桁だけとして([1-9])
>>991の3行目で項に使える文字を設定します。この場合は3行目を↓に書き換えるだけです。
[1-9]
[^ ] とすると"使えない"文字の設定になります。
[ ] とすると"使える"文字の設定になります。
>項のC_TERMについてはどうすればいいでしょうか?
>>991の正規表現は式全体にマッチする正規表現です。この正規表現で式全体を取り出し、項の部分がC_TERMに
マッチするかをテストして下さい。
今回の場合、項以外の文字は(、)、+、*の4文字だけなので、それ以外の文字列が項です。
↓の正規表現で項が1つずつ取り出せます。
[^()+*]+
取り出した文字列がC_TERMにマッチするかテストするコードを書いて下さい。すべての項がC_TERMにマッチすれば
照合完了です。C_TERMにマッチするかテストすると同時に置換もすれば目的達成です。
>>939
>ERROR: undefined group option
今回の正規表現では<項>など、グループの名前として漢字を使っていますが、C#では半角文字しか
認識出来ないのかも知れません。代わりに<TERM>などのように半角文字の名前に書き換えると動くかも知れません。
>サンプルコード
C#の環境はないので申し訳ないけど他の方にお願いしてみて下さい。^-^;
0993デフォルトの名無しさん
2011/12/11(日) 10:21:22.31http://hibari.2ch.net/test/read.cgi/tech/1323566370/
0994デフォルトの名無しさん
2011/12/11(日) 10:43:31.79おつうめ
0996939
2011/12/11(日) 15:01:04.31ONIG_SYNTAX_PERLにするとエラーが出ることには変わりなかったですorz
> r = onig_new(®, pattern, pattern + strlen((char* )pattern),
> ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_PERL, &einfo);
こうじゃないってことですかね。
0997デフォルトの名無しさん
2011/12/11(日) 15:01:38.980998デフォルトの名無しさん
2011/12/11(日) 15:13:00.61ONIG_SYNTAX_PERL_NGだろ?
0999939
2011/12/11(日) 15:15:22.79動きました!
>>934で
> 鬼車のオプションはONIG_SYNTAX_PERLで。大文字小文字の区別は無しで。
と書かれていたので><
ありがとうございました
1000デフォルトの名無しさん
2011/12/11(日) 15:17:33.7110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。