TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
匿名掲示板Nch開発スレ part2【2chを越える】
【V5計画】CAFEMILK SHOPPING CART V5
【MT】MovableType【設置方法】
【Java PHP CGI mod_perl】の使い分け for プロ
七行プログラミング
WebProg板出席簿(寂)
W→e→b→P→r→o→gと続いたら神
人工無脳
CGI暴走はどういう時に起きるのですか?
webプログラマーの募集方法

正規表現道場 Part2


1 :2012/09/19 〜 最終レス :2019/07/30
【正規表現道場の掟】
・言語不問
・質問も大歓迎。使用言語を書くのを忘れずに。
正規表現と関係ない話・質問は他スレへどうぞ。
前スレ
正規表現道場
http://kohada.2ch.sc/test/read.cgi/php/1168450843/

2 :
>>1
●過去スレ
正規表現道場@2ch
 http://pc.2ch.sc/test/read.cgi/php/996105815/
正規表現道場@2ch Part2
 http://pc5.2ch.sc/test/read.cgi/php/1038146241/
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
 http://pc5.2ch.sc/test/read.cgi/php/1069245758/
正規表現道場@2ch Part4
 http://pc8.2ch.sc/test/read.cgi/php/1105930285/

●過去スレのテンプレにあった参考サイトたち
Perlメモ
 http://www.din.or.jp/~ohzaki/perl.htm
正規表現メモ
 http://www.kt.rim.or.jp/~kbk/regex/regex.html
Regex::Diagram.pm
 http://www.cc.rim.or.jp/~midorin/mad-p/RegexDiagram.html
正規表現
 http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
UNIX正規表現入門
 http://web.archive.org/web/20021219021503/http://www01.u-page.so-net.ne.jp/jc4/hiroyuki/rex_index.html
Regular Expression(Riue ちゃんの正規表現講座)
 http://www.sixnine.net/regexp/
ほとんどは↓のリンク集にまとまっています。
正規表現/文字コード最新リンク2005
 http://www2.famille.ne.jp/~akio1998/l_grep.html (Not Found)

3 :

                        |:::ハ:.:.:.:.:.:i:.:.:i.:.:i./.:.://メノ  左ォ}::::ノ::ノノ
                    |::::i:::';::::::::l、::i:::ハ:/,ィチ爪'    {ヒチ'!::イイ
                      |ハ::::::ヾ::::ハ 'Vリ ゙´ {、込ソ    ゛″!:::i:.:l
                        |:.::ト、:.:.:ヾ:.ハーi|   ::::::::      〉 ノ::::i::.|
                    {:.:.ト、ヾ.:.:.:ヾハ lト、        _, , イ:.:.:.:i.:ハ
                     ヾ::ヽゞ、\.::.\!! ヽ、.   ´ /!.::!.:.i:.:!:.!:l    >>1乙ぱい
                 , '" ヾ\ \:::::::::k   /` ー ' `メ'リ:.:.ノ.ノ:ノノ
                     /     川   リllVハ. (  i `\ ,イイ// //
                /              |l ̄`ヽ  ノ    `メ、
               ,/            {:}          `ー'- ニ_
             ,/         _∠     |l     \ ,      \
        /        _ ,. イ´:       |l      \      ,λ
       /   -‐‐‐-<´   .!   /    |l       ' ,   _,ィ'ンy}
        〈            \  .ノ`ー斗rェ,,_,_,_|l          ,.ir'彡イy-´ !
        `ヽ、        ` ' <._ {jt=t-t-ミ`^Yーrヘr-彡'水k} !:} .ノ
            ` ー-  .._       ` -ヽ.  l`亠^{:i ̄ {:リ |ハ ノノ/ノ
        _,. -‐ '  ̄ ´ ̄` ー- 、    \{{   {:l   {:i ノ_,ィニ_ン´
      //                  `ヽ 、\ \  {:l  {∠ニァ--'
     / /                 `ヽミニ>ァ┴ '´
   /\V|                          /
  ./   ヾ.、                  ,. ' ´

4 :
>>2
正規表現最新リンク集2005
http://web.archive.org/web/20100410230942/http://www2.famille.ne.jp/~akio1998/l_grep.html
個人名載ってるしこのまま外しちゃってもいいかもしれない

5 :
過疎スレ状態になっているっぽいですが質問宜しいでしょうか?

6 :
>>1

7 :
質問は?

8 :
>>5の人とは別人ですが質問がありますのでお願いします
拒否したいワード例
・ばか
・ばっかやろー
・ばーか
掲示板の拒否ワード機能を使って上のような言葉を
 ^(ばか|ばっか|ばーか)
このようにまとめているのですが、
もっと効率よくまとめられるような気がしています
 ^ば(0または任意の1文字)か
以上のように、
まとめることは可能でしょうか?

9 :
ば.?か
ばいか(売価)とかも入るけどねー

10 :
〜ばかり
ばっかり
ばんから

11 :
ばんかい
バイカム
こういうのは>>8の指定の方が間違いがないね

12 :
まさに、>>9のようにまとめるられる書式を知りたかったのです!が…
皆さんご指摘のことを読むと確かにおっしゃるとおりですよねー
ば.?か、のような書式で運用できるかできないか、
掲示板のログとにらめっこしてみることにします
ともあれ、お答えくださった皆さん、とても参考になり助かりました
ありがとうございました

13 :
せめて同じ文字はまとめるか
^(ば(か|っか|ーか))

14 :
パスワードの登録で
半角アルファベットと半角数字の組み合わせで8文字以上
という条件を考えてるんですが、以下じゃダメですよね?
preg_match('/^[a-zA-z0-9]{8,}$/', $s);
アルファベットと数字の組み合わせ(アルファベットも数字もどちらもある)とするには
どうしたら良いでしょうか?

15 :
>>14みたいな正規表現のちょっとしたテクニック集とかどっかにまとまってないかね?

16 :
/^(?=(.*\d[a-zA-Z].*)|(.*[a-zA-Z]\d.*))\w{8,}$/
数字英字 もしくは 英字数字という並びが存在する英数字8文字以上

17 :
>>16を1回チェックするのと、
>>14と「英字を含む」「数字を含む」の計3回チェックするのとで、どのくらい
ここまで書いたところで自分でいろいろ試してみた。
$s = '3066058kczgr9784685fwn874fos847fos8djtkcrzu9q58nzfc';
for($i=0; $i<1000000 && preg_match('/^(?=(.*\d[a-zA-Z].*)|(.*[a-zA-Z]\d.*))\w{8,}$/', $s); $i++){} //2.3948659897 sec.
for($i=0; $i<1000000 && preg_match('/^[a-zA-z0-9]{8,}$/', $s) && preg_match('/[a-zA-z]/', $s) && preg_match('/[0-9]/', $s); $i++){} //5.7406949997 sec.
for($i=0; $i<1000000 && preg_match('/^[a-zA-z0-9]{8,}$/', $s) && !preg_match('/^[0-9]+$/', $s); $i++){} //3.9960801601 sec.
for($i=0; $i<1000000 && 8<=strlen($s) && ctype_alnum($s) && !ctype_digit($s); $i++){} //2.2285568714 sec.
$s = '1';
for($i=0; $i<1000000 && preg_match('/^(?=(.*\d[a-zA-Z].*)|(.*[a-zA-Z]\d.*))\w{8,}$/', $s); $i++){} //0.0000748634 sec.
for($i=0; $i<1000000 && preg_match('/^[a-zA-z0-9]{8,}$/', $s) && preg_match('/[a-zA-z]/', $s) && preg_match('/[0-9]/', $s); $i++){} //0.0000240803 sec.
for($i=0; $i<1000000 && preg_match('/^[a-zA-z0-9]{8,}$/', $s) && !preg_match('/^[0-9]+$/', $s); $i++){} //0.0000209808 sec.
for($i=0; $i<1000000 && 8<=strlen($s) && ctype_alnum($s) && !ctype_digit($s); $i++){} //0.0000181198 sec.
おもしろかった。

18 :
>>13
これはひどい

19 :
^([a-z]|[A-Z]|[0-9]){8,}$
はダメ?

20 :
ダメ

21 :
>>19
大文字と小文字を区別したいってことなら
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9]{8,}$
でおk

22 :
すっごい初歩的だったらすまそ
http://www.rider-n.sakura.ne.jp/regexp/regexp.php
で試す限りはうまくいくんだけどPHP上でうまくいかない。
スクリプト SJIS
マッチング文字列 SJIS
PHP内部文字エンコ SJIS
の環境下で
【サッカー】xxxxx【野球】
で最初のサッカーだけをマッチングしたいので
/^【([^】])】/i
としているんだけど、サッカーの時はマッチしない。
【テニス】xxxxx【卓球】ならちゃんとテニスがマッチする。
なんで?(´・ω・`)

23 :
>>22
それだとテニスもマッチしないはずだが
[^】] は「 】」以外の1文字ってことになる
それとShift_JISなんて捨ててUTF-8使おうぜ

24 :
>>23
すません、[^】]+です。
SJISで何とか…

25 :
mb_regex_encoding("sjis");
mb_ereg ("^【([^】]+)】" ,$txt,$ret);
pregはSJIS使えません

26 :
>>22
文字列をアスキーコードに変換してから検索しろ

27 :
javascriptでの正規表現で質問があります。
/^(?:(?:http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)*$/
上記はURLをチェックする簡単な正規表現だと思うのですが
そのURLがRSSかどうかチェックする正規表現にしたいのです
RSSの拡張子は .rss .rdf .xml です。
URLの最後の拡張子にこの文字列が入ってるかチェック出来るようにしたいのですが
どうすればいいでしょうか?
お願いします。

28 :
最後をこれに差し替え
\.(rss|rdf|xml)$/

29 :
>>28
レスありがとうございます
ただこれに差し替えるだけだと
http://www.example.com/.rss
これも正常として判断されてしまうのですがどうしたら良いでしょうか?
よろしくお願いします。

30 :
[^\\/:,;*?"<>|]\.(rss|rdf|xml)$

31 :
>>30
お礼遅くなってすいません
ありがとうございます!
うまくいきました!

32 :
PHPのpregでの正規表現について質問です。
<a href="http://www.test.jp/" title="test"><img src="test.png" alt="ALT" title="TITLE" /></a>
上記のようなHTMLを正規表現でヒットさせ、
<li>TITLE</li>
に変換させたいのですが、正規表現ではどう表したらいいのでしょうか?

33 :
保守

34 :
正規表現で解決できるのではと思い、こちらで質問させてください。
"ver.2 test.Test"という文字列を"ver.2 test. Test"のように
ピリオドの次の文字が大文字のときに限り半角スペースを挿入したいのですが
良い方法はないでしょうか?

35 :
>>34です。
正規表現のグループ化を用いることで解決できました。
安易に質問を投稿してしまい申し訳ございませんでした。

36 :
せっかくなのでその正規表現を書いておきますねくらいの気持ちが必要だ。

37 :
>>34
preg_replace('/\.(?=[A-Z])/','. ',$str);

38 :
>>32
見ての通り超手抜きだけど例の通りか属性値のダブルクォートが無いぐらいならこれで大丈夫
検索文字列: /^(.+<img.+title=\")(.+)(\" \/><\/a>)$/
置換文字列: <li>$2</li>
http://regex101.com/r/qI6aG4

> PHPのpregでの正規表現
実はPHP分からないんだけど↓みたいな感じ?w
preg_replace("/^(.+<img.+title=\")(.+)(\" \/><\/a>)$/i", "<li>$2</li>", $input_lines);

39 :
質問です。
PHP5で
preg_match ("/.*'.*/s", $_POST["value"])
としたときにvalueに「'」があってもマッチしない場合があるらしいのですがどういう文字列の場合でしょうか?
preg_matchはPCRE関数でPerl互換です。マルチバイトに対応していないのでその辺りに落し穴があるのかなと思うのですが。

40 :
FireFoxでRSSリーダにFeedlyを使っています。
NGワードフィルターが正規表現なのですが教えて頂けないでしょうか。
"韓国"というキーワードをフィルタリングしたいです。
http://userscripts.org/scripts/show/172085

41 :
>>39
マッチしない場合があるとは思えないけど、一応マッチしない場合があると言った人に聞いてみれば?
まぁ、$_POST["value"]が送信されて来なければ話は別だけど・・
ちなみにそれは preg_match("/'/", $_POST["value"]) のようにシンプルに書くこともできる

42 :
>>40
使ったこと無いけど、"韓国"だったら完全一致なのでそのまま正規表現使わずに書けると思うけど

43 :
2ch専ブラにおける2chmateのデバッグ用文字列のみの書き込みをNGにしたいです
2chMate 0.8.5.6 dev/HTC/HTL21/4.1.1
2chMate 0.8.5.4/SHARP/SBM003SH/2.3.4
↑こんなやつです
一応専ブラはjanestyleということでどなたか教えていただけませんでしょうか

44 :
韓|トンスル|ニダ|

45 :
>>41
マッチしない場合は無いようでした。
phpの設定の問題でpreg_matchがマッチできずfalseを返す場合があるらしいです。

46 :
最近2ちゃんで同じ文字列を数行繰り返す荒らしがいますが
最近2ちゃんで同じ文字列を数行繰り返す荒らしがいますが
最近2ちゃんで同じ文字列を数行繰り返す荒らしがいますが
↑こんな感じです
改行を挟まない場合もあります
Janeでこれをあぼーんしたいんですが
同じ文字列が数行続いたかを調べられる正規表現はありませんか

47 :
>>46
1行文の2連投
http://thinkarc.blogspot.jp/2007/07/janeviewngex.html#NGEx_Contiguous_single-line
んでこれ以上は下で NGEx.txtを晒すスレ4
http://mattari.plusvip.jp/test/read.cgi/jane2ch/1325934427

48 :
>>47
ありがとうございます
無事あぼーん出来ました
直前の自分のレスも消えてます

49 :
下の文字列から最短で「NN are_VBP strongly_RB supported_VBN」を抜き出すのに
NN\s.*?VBNでうまくいかない(最長マッチが返ってくる)のですが、何が悪いのでしょうか?
In_IN Israel_NNP ,_, freedom_NN of_IN opinion_NN and_CC risk_NN taking_NN are_VBP strongly_RB supported_VBN ._.

50 :
それだと最初に出現するNN\s位置からマッチングが始まって、
最短で後続するVBNまでがマッチする
こうじゃないか?
.*(NN\s.*?VBN)

51 :
>>50
ありがとうございます。
しかし、、、.*(NN\s.*?VBN) だと、今度は、行全体がマッチしてしまいます。。。
ムムム

52 :
NN arからじゃ駄目なん?
NNじゃ>>50の言うとおり最初のNNからマッチするんだし

53 :
>>50
>>52
ありがとうござしました。
プログラム板でも聞いてみたところ、下のような表現を教えてもらいました。
NN\s((?!NN).)*?VBN

54 :
>>53
結果教えてくれてありがと
前方参照否定位置指定子かー
NNが来ないNN空白〜VBNにマッチするのね

55 :
ええい、お前はもう下がっておれ
webprog板の面汚しめ

56 :
php使いが鼻で笑われる所以(´・ω・`)

57 :
(´・ω・`)←この顔文字、3年ぶりぐらいに見たw

58 :
>>57
女友達いないの?

59 :
PHP5.4です。
'hoge山田
太郎2様hoge'
(2の数字は色々変わります)
の中から'太郎2様'をマッチさせたいのですが
/山田[\s\S]*?(/太郎.*?様/u)様/u
でうまくいかないです。どなたか教えて下さいまし。。。

60 :
太郎\d+様

61 :
>>60
なんとー
ありがとうございます

62 :
行の最後に[a-z0-9]が9文字、はどう指定するんでしょうか
([a-z0-9]){9}$
$(([a-z0-9]){9})
と思ったのですが、うまくいかないです。

63 :
[a-z0-9]{9}$

64 :
ありがとうございます!

65 :
ab(cd)efg
とある時
(.*?)
で"(cd)"は返ってきますが、
"cd" とカッコの中身だけを取りたい時はどうすればいいでしょうか
"(" と ")" を置換するしかないですか?

66 :
言語、、つか環境は?

67 :
エスケープしろよ

68 :
PHP5で
パターンは、/<a>.*<\/a>/
対象文字列は、<a>テスト1</a><a>テスト2</a>
preg_match('/<a>.*<\/a>/', '<a>テスト1</a><a>テスト2</a>', $result)
でマッチした文字列は、
$result[0]:<a>テスト1</a>
$result[1]:<a>テスト2</a>
となることを期待しているのですが、
実際は、
$result[0]:<a>テスト1</a><a>テスト2</a>
となりました。
<a></a>は独自タグで間に入る文字列長、フォーマットは不定です。
どうすれば期待通りの振る舞いに出来るでしょうか?

69 :
68です。
すみません。訂正します。
× preg_match('/<a>.*<\/a>/', '<a>テスト1</a><a>テスト2</a>', $result)
○ preg_match_all('/<a>.*<\/a>/', '<a>テスト1</a><a>テスト2</a>', $result)

70 :
?

71 :
正規表現の練習になるお題ください

72 :
>>71
お題が欲しけりゃJaneのReplaceStr.txtとかNGEx.txtとか自分でいじってみればいいんじゃないの?
練習はReplaceStr Toolでやれるから。
グループ化を使って解析させると幾分わかりやすくなる。

73 :
おしえてください。
テーブルタグで囲っている、下記のような
HTMLの表があります。

名前 | ふなっしー
住所 |  東京都港区赤坂
電話番号 | 090-0000-0000

ふなっしー
東京都港区赤坂
090-0000-0000
という結果を期待して
名前(.*)
住所(.*)
電話番号(.*)

と書いたんですが、使い方を間違っているのか?
うまくいきません。
他の記述方法はないでしょうか?

74 :
ム板の本スレが新しくなったため報告させていただきます。
■本スレ
Regular Expression(正規表現) Part12
http://toro.2ch.sc/test/read.cgi/tech/1387257592/
■注意
工作員がわざと重複させて立てた偽スレを本スレだと偽って宣伝に来る可能性があります。
本スレは上記のみですので十分ご注意ください。

75 :
>>72
ReplaceStr Toolって?ググったが出てこない

76 :
>>75
これだろ。
ttp://1st.geocities.jp/neeetest/RepStrTool_2.8.zip

77 :
質問は>>74のスレにどうぞ。
保守。・・のついでに私的メモを書いていくかも。
檜山正幸のキマイラ飼育記
http://d.hatena.ne.jp/m-hiyama/20100603/1275546996

78 :
IT PRO - 形式言語とオートマトンを学ぶ (3/4)
http://itpro.nikkeibp.co.jp/article/lecture/20061127/254890/?ST=selfup&P=3

79 :
質問は>>74のスレにどうぞ。
http://www1.adachi.ne.jp/katz/primer/automata.html
会社の新人研修でオートマトンの講義を担当した。

80 :
計算機数学 町田 元
http://www.amazon.co.jp/dp/4627821506
大阪大学 - コンピュータ数学
https://koan.osaka-u.ac.jp/syllabus_ex/campus?view=view.syllabus.ex.refer.sogo.search
&func=function.syllabus.ex.refer&nendo=2009&j_s_cd=09&j_cd=090508&langkbn=j
※ 全部正規表現に関係するリンクなんで荒らしではないです。
正規表現に関わるオートマトンの知識を付けたい方には参考になると思います。

81 :
有限オートマトンと正規表現 (ヤギ 野菜 狼)
ttp://www.i.kyushu-u.ac.jp/~takeda/Lectures/.../ComputationTheory01.pdf?

82 :
ある文字列を含まないものにマッチする正規表現
(?:(?!foo).)*
^(?:(?!foo).)*o$ → 「foo」 にマッチ出来ない。
先読みを使わない正規表現ならマッチ出来る。
→ (?:(?!foo).)* は厳密には間違い。
Q、では先読みを使って正しく動作させるにはどう書くべきか?

83 :
お望みの先読み使って書くなら /fo(?!o)/
だろうが、
こんなの使うくらいなら
if (/foo/) {
} else {
  ※ここに書いたほうがいいに決まってる
}
で、もはや正規表現使うコストももったいないくらいだから
普通は strpos()みたいな関数使うべきだろう。

84 :
先頭一致とか後方一致はsubstr使ってる
iオプション必要なら代わりにlc

85 :
c

86 :
>>83
>>82の内容を理解出来てないね・・
(?:(?!foo).)* → fo にマッチ
o$ → o にマッチ
これ足して foo にマッチ「する」のが期待する文字列否定の動作。
fo の中に foo は含まれていないので fo にはマッチしなければならない。
>関数使うべき
マラソン選手に車使うべきって言ってるようなもん。

87 :
正解はこちら↓
Perl正規表現雑技 - ある文字列を含まないものにマッチする正規表現
http://www.din.or.jp/~ohzaki/regex.htm#Without

88 :
うーむ、オートマトンの勉強というか、まだ触りしか学んでないんだが
既に文字列否定の正規表現を簡単に作れるようになってしまった。
チャリの運転と同じで、一旦出来るようになるとなんてことないね。

89 :
(次のお題)
abc かつ def を含まない文字列を表す正規表現を作れ。ただし先読みはNG。

90 :
お題が提示されておりますが、質問よろしいでしょうか。
言語は Java(Android開発) です。
やりたいことは、
 ・'a', 'b', 'c', '*' の4つの文字が使われた文字列を分割する
 ・'a*', 'b*', 'c*' は1文字として扱い、'*'のみの物は無い
になります。
例えば "aba*cb*" の場合は
a
b
a*
c
b*
に分割したいです。
どのように書けば良いのでしょうか、ご教授願います。

91 :
([abc]\*?)

92 :
このスレは道場と名の付いてる通り正規表現のスキルアップを目指すスレです。
糞質問・キチガイは↓こちらにお願いします。
Regular Expression(正規表現) Part12
http://toro.2ch.sc/test/read.cgi/tech/1387257592/

93 :
>>91
ありがとうございました。勉強になります。
>>92
>>1も読めない糞は2chには向いていないと思うよ。
もう何十年も居座っていると予想されるが、そろそろ自覚しなよ。

94 :
ここはもう荒らしの本拠地になってるから仕方がないよ。
わざわざ煽りにム板まで出張してきてるし。

95 :
こちらは精神異常者の隔離スレとなっております

96 :
じゅんじゅんのきまぐれ
http://d.hatena.ne.jp/junjun777/20110927/regexp_not_include
おや、あわわさんとやらが俺の代わりに知らせに行ってくれてたのか。
あわわさん乙。ありがとう。
正規表現 Part11
http://toro.2ch.sc/test/read.cgi/tech/1363769640/337
ってあれ?あわわさんのほうが6時間早い。CPU時計の時差?

97 :
レベル高いスレにただいま。

98 :
荒らしの住み処
ただのクソスレ

99 :
ところで向こうの267は雑技たんなのかな?266、雑技のネタに使ってもよかですたい。

100 :
>>99
当たりw
266の書き方は考えたけど,今回のケースでは267の書き方で大丈夫と考えた.
そういや質問者は「1」を含まないって書いてあるのに,なぜ「123」? とは思ったなw
後ろに他の正規表現を続けたりするとバックトラックして,
271の通りの可能性があるから初心者には266の方がいいのは確か.
ただ,他にもいろいろ考え出すと,最も内側のものだけ削除したいのなら,
ABC(?:(?!123|ABC|DEF).)*DEF
と書いた方がいいとかもある.
ちなみに266のミソは↓の辺りで微妙に使っていたりする.
http://www.din.or.jp/~ohzaki/regex.htm#NoEndTag

101 :
>>100
ああ、考えてみればABCも入れたほうがいいね。質問者の対象データが対になってる
データだったから必要性を感じなかったが入れるべきだった、さすが雑技たん。
>なぜ「123」?
1というのは実データとは違う省略形と考えた。
初心者には文字と文字列の違いが分からないから文字列のつもりで1と書いてしまった
可能性がある。そこで文字列に対応しておけば1文字にも対応出来るってわけ。
>ABC(?:(?!123|ABC|DEF).)*DEF
これが基本形やね。高速化するなら*+とか、もっとやるなら[^1AD]*+使ってごちゃごちゃ書いたり。
>NoEnd
ミソは否定の中に分岐を入れることだからそれとはちょっと違うw
それと <\2> だと <font> になってしまうで・・ <\2\b やね。

102 :
>>101
>1というのは実データとは違う省略形と考えた。
なるほど.確かに,初心者ほど状況説明が下手だからね.
>それと <\2> だと <font> になってしまうで・・ <\2\b やね。
単純なミスだな.指摘ありがとう.

103 :
・範囲内で文字列を含まない正規表現
$_ = "zzzABC XYDEFzzDEFz";
if ( m/
# Perl 5.10 以降で有効
ABC
[^XAD]*
(?:
(?!XYZ|ABC|DEF).
[^XAD]*
)*
(*PRUNE) # バックトラックステートの削除
(*SKIP) # 次回の走査開始位置をここに飛ばす
(?:XY?)? # XYZとDEFの競合を想定した取りこぼし回収
DEF
/xgsiaap )
{ print "match! <".${^MATCH}.">"; }
else
{ print "no match."; }
>>102
修正乙!

104 :
修正乙の後でアレなんだけど、実際に動かしてみたらだいぶおかしいから手直ししてみたよ、と。
while ($html =~ /
<(NOBR|CODE|B|PRE|FONT)\b
(?=
(
(?:(?!<\/\1>).)*?
(?:<\1\b|$)
)
)
/sixg
) {
print "<".$1.$2, "\n";
}
------------- perl.htm -------------
<b><font><pre><b>aaa
------------- perl.htm -------------
*? はなるべく使いたくないなぁ・・ [^<]*+ を使って最適化したいw

105 :
>>103
(*VERB:ARG) ってのは知らなかったなぁ.
今回のケースだと(*PRUNE)は(?>pattern)で置き換えができると思うが,
マニュアルの 「(*PRUNE) は (?>pattern) 単独では表現できないケースを扱うために使えます。」ってのがどういうケースなのか想像できん.
>>104
修正ありがと.
元のやつだと後ろを吸い込んじゃうからマッチ位置が先に進んでしまう.
そうならないように先読みを使うと,先読み部分は後方参照に含まれなくなるから,先読みの中で改めて補足が必要って感じだね.

106 :
>>105
>単独では
・・・ ( ・・・ (*PRUNE) )
みたいに ( ) で分断されてる場合とか? (?> だと2つ以上必要になる。
>マッチが先に
当たり〜。printのとこは""の中にまとめて書いても大丈夫だったのか、勉強になりますた。
改めて修正乙。

107 :
>>103
「XYZとDEFの競合」ってのはXYZの後半部分がDEFの前半部分と同じ場合ってことかな?
例えば,xydとdef,とか,xdeとdefみたいな
もしそういう,後半部分と前半部分が重なる場合を考え出すと,話がもう少しややこしくなる.
つまり,ABCDとCDEFがキーだったときに,ABCDEFという文字があったら,
それはABCD+EFと解釈するのか,AB+CDEFと解釈するのか,という問題.
その解釈がすべて前方優先なのか,すべて後方優先なのか,それともキーの相互の優先度で決まるのか,
あるいは,あらゆる可能性を許すのか,あらゆる可能性を許さないのか.
キー自身が重なる場合もある.
例えば,ABCABみたいなキーだったとき,ABCABCABは,ABCAB+CABなのか,ABC+ABCABなのか.

108 :
>>106
>・・・ ( ・・・ (*PRUNE) )
なるほど,括弧の深いところで使うと,(?> で表現するのは大変そうだ.
しかも,もしそれが中間レベルで分岐してたりすると,(?> では表現しきれないかな.

109 :
>>107
ぶっちゃけその辺は何も考えてない。試作品とかテンプレートみたいな感じで作っただけ。
競合対策の部分は普通の使い方をするならいらないね、HTMLやXMLタグで挟まれた文字列にマッチさせるときとか。
こういうの以外に使い道が思い当たらないし。(だったら付けるな)
>>108
>分岐
なるほど、(?> ではお手上げだ。俺も年末に覚えたばかりでよく分かってない。

110 :
## (*COMMIT)
$_ = "12";
if (
m/^1((*COMMIT)3|2)/
){ print "match!\n"; }
# 分岐の中で踏まれると以後ほかの分岐要素を走査することがなくなる。
# 現在の分岐要素がマッチ失敗したら全体もマッチ失敗となり検索はそこで完全終了する。
m/^1(*COMMIT)(3|2)/
# 下位層の分岐は走査され、マッチが成功する。
$_ = "12";
@test = $_ =~ m/^1(*COMMIT)A|\d/g;
print "@test\n";
# /g でも次位置からの走査は行われない。
@test = $_ =~ m/^1(*COMMIT)|\d/g;
# 結果 = 1 2 。マッチが成功した場合は走査を止めることはない。(失敗したときだけ止める)

111 :
Q、(*COMMIT) とは逆にマッチが成功したときだけ /g を止める最も簡単な手段は何か?
$_ = "123";
@test = $_ =~ m/1|2|3/g;
print "@test\n";
↑2 がマッチ成功したときに /g を止め、3がマッチしないようにする。
フラグ変数を用意、チェックすれば可能だがもっと手軽な手段はないか。

112 :
う〜ん、/g はループなのに break する方法が用意されていない。
COMMIT があるのにこれがないのはとても不可解だ。
# 先読みの中の (*SKIP) は機能しない。
@test = $_ =~ m/1|2(?=.*(*SKIP))|3/g;
# while 文の last を使う。
$_ = "123";
while ( m/1|2|3/gp )
{ print "${^MATCH}\n";
last; } # 1 で止まる。
# (?{code}) で last → 効果なし
while ( m/1|2(?{ last; })|3/gp )
# while 文に名前を付けて (?{code}) で last → 効果なし
TEST : while ( m/1|2(?{ last TEST; })|3/gp )
perl陣営に言えば新しいコマンド作ってくれそうだなぁ。

113 :
# (?-g) → 効果なし
while ( m/1|2(?-g)|3/g )
# 苦肉の策 (現実的でない)
while (
m/(1)|(2).*|(3)/g
)
{ print "${^N}\n"; }
# 苦肉の策 + 最後の空文字列にマッチしない対策 (現実的でない)
while (
m/\z(*COMMIT)(*F)|(1)|(2).*|$/g
)
{ print "match! ${^N}\n"; }

114 :
>>111
>>112 >>123
/g がループというのはちょっと違う.
リストコンテキストで評価したときはループと言えるが,スカラーコンテキストで評価したときはループではなく,
単に前回マッチした場所を覚えていて続きからマッチングを行うというだけ.
この問題はリストコンテキストで /g を評価したときに,マッチ成功後に途中で止めるいい方法はないかって言う問題だと解釈した.
スカラーコンテキストで評価したときに止めるんなら last を使えば簡単に止まる話.
つまり,while を使っていいんなら,
while (/1|2(*:STOP)|3/g) {
push(@test, $&);
last if $REGMARK eq 'STOP';
}
print "'@test'\n";
リストコンテキストで評価したときに途中で止めるには,かなり条件が限定されるが,
@test = $_ =~ m/(?(?<=2)\G(*COMMIT)(*FAIL))(?:1|2|3)/g;
ぐらいしか思いつかなかった.
これではフラグを使った方が簡単だろう.

115 :
>>114
>ループというのはちょっと違う
そのへんはちゃんと理解してるから大丈夫。foreachとか<>みたいなつもりで書いてるから。
>リストコンテキストで /g を評価したときに,マッチ成功後に途中で止めるいい方法はないか
その通り。
>(*:STOP)
これはフラグ変数を使うやり方とまったく同じだからボツ・・。{ } の中で last するのはナシ。
m/ / の中で止められないか、という話だから。
しかも$REGMARKと$REGERRORは予期しない動きをすることがあるから
普通にフラグを使ったほうが確実。(後述)
>これではフラグを使った方が簡単だろう
やっぱそうかぁ、雑技たんでもダメなら無理そうだね。考えてくれてありがとう。

116 :
## $REGERROR
# マッチ失敗でも$REGERRORが偽を返す例
$_ = "11";
m/^(*MARK:NAME)12/;
if ($REGERROR){ print "yes\n" }else{ print "no\n"; };
結果 → no
# 2 を (?!) や (*FAIL) に変えると・・?
m/^(*MARK:NAME)1(?!)/;
結果 → yes
2 を $ にすると no のまま。

117 :
あれ、$REGMARK が予期しない動作になるデータはないや。
ごめん、使えないのは $REGERROR だけかも。

118 :
>単に前回マッチした場所を覚えていて続きからマッチングを行うというだけ
あ、ちゃう、これ分かってなかった。場所覚えてるだけだったのか、違和感感じてたんだけど
やっと理解出来たよ、ありがとう。

あと雑技たんのサイトだけど
>回文にマッチする正規表現 # 再帰版
× (??{$palindrome})*
○ (??{$palindrome})?
だね。前者だと回文を繋げた文字列 121454989・・・ みたいなのを拾ってしまう。

119 :
>>117
確かに $REGERROR は期待通りに動かないな.
>>118
回文の間違い指摘ありがとう.

120 :
おや、出来ちゃった・・
# リストコンテキスト + /p のマッチング中に break する。
$_ = "123";
@test = $_ =~ m/
1
|2
(?{ $last = "${^MATCH}"; })
(*COMMIT)(*F)
|3
/xgp;
push(@test,$last);
print "@test\n";
# リストコンテキスト + /p のマッチング中に break する。( push版 )
push(@test,
m/
1
|2
(?{ $last= ${^MATCH}; })
(*COMMIT)(*F)
|3
/xgp
,
$last
);
>>119
仕事はやっ!修正乙〜

121 :
↑× /p のマッチング中に → /g の間違い
----------------------------------------------
# 先読みの中の (*SKIP) は正しく機能する。(× >>112)
$_ = "123";
@test = $_ =~ m/1|2(?=.*\z(*SKIP)(*F))|3/g;
print "@test\n";
# 結果 → 1
# 先読みの中の (*SKIP) が失敗する例もある
@test = $_ =~ m/1|2(?=.*\z(*SKIP))(*F)|3/g;
# 結果 → 1 3
# perl内部の最適化の影響により (?=) より早く (*F) が判定されている?
# $REGERROR が期待通りに動かない原因も最適化が犯人? (最適化は 詳説 正規表現 参照)
----------------------------------------------
# \z で始まる正規表現 + while( /g )
while (
m/\z(?{ print "in code\n"; })/g
)
{ print "match!\n"; }
<結果>
in code
match!
in code
2回走査されてる。2回目は走査しといてマッチ失敗。/g により1つ先に進む動作の副作用?
(?{code}) が2回実行されるのでプログラムが想定外の動作になる可能性。
/g を忘れると走査開始位置が毎回先頭に戻り、無限ループになる。

122 :
# リストコンテキスト + /g のマッチング中に break する。(perl 旧verl対応版)
$_ = "12223";
@test = $_ =~ m/
1
|2
(?{ $last = "$&"; })
.*\z # 余った文字列を全部マッチさせる。
|3
/xgs;
$test[$#test] = $last; # 最後の要素の入れ替え
print "@test\n";
これらを "break出来てる" と言うのはちょっとおこがましいかも知れない。やはり break コマンドが欲しい。

123 :
・$REGERROR を (?{code}) と入れ替えて実験
my $cnt = 0;
$_ = "11";
m/^(?{ $cnt++;})1(*F)/;
print "$cnt\n";
# 結果 → 1
my $cnt = 0;
$_ = "11";
m/^(?{ $cnt++;})12/;
print "$cnt\n";
# 結果 → 0
$REGERROR さんに無罪判決。冤罪でした。

124 :
皆様、こんにちは 質問させてください
テキスト内の文字を置き換えるアプリ(Devas)で作業をしています
正規表現で文字検索と置き換えしたいのですが表現法がわかりませんので
詳しい方アドバイス下さいませんでしょうか?
テキスト内には
.(ドット)abc"IMG
.(ドット)def"IMG
.(ドット)ghr"IMG
など . と "IMG で囲まれた数パターンの文字列がありこれに元文字列を利用し .photo を付け加えたいのです
.(ドット).photo.abc"IMG
.(ドット).photo.def"IMG
.(ドット).photo.ghr"IMG
検索、置き換え 共に正規表現が使えるアプリなのですがそれぞれどう表現して良いのか教えてくださいませんか?
よろしくお願いいたします 

125 :
・開始タグと閉じタグの間に文字列を含まない正規表現 (正規表現 否定 除く)
$_ = "ABC ABC DEF ABCDEF";
while ( m/
# Perl 5.10 以降で有効
ABC
[^ADX]* # 先頭の文字を使った高速処理
(?:
(?:
DEF (*ACCEPT) # マッチ成功
|\K ABC # 今までマッチした文字列を捨ててリスタート
|XYZ (*PRUNE) (*SKIP) (*F) # NGワード検出、マッチ失敗
|. # ↑の3つ以外の1文字
)
[^ADX]*
)*
(*COMMIT) (*F) # DEFで閉じられないまま終端に到達。
/xgsiaap )
{ print "match! <${^MATCH}>\n"; }
# NGワード、開始タグ、閉じタグの競合は想定していない。
# 例、NGワード="</" 、 閉じタグ="</div>"

126 :
s/^\./.photo./g
行頭限定の場合

127 :
>>124
<検索>
\.([a-z\d]{1,4}"IMG\b)
<置換>
..photo.$1
\. を ( ) に入れてないのは処理効率を上げるため。
「abc」の部分は拡張子と考えて数字も許可した。(1文字以上4文字以下の英数字)
何かまずかったら遠慮なく。

128 :
たくさんレスいただきましてありがとうございます
お礼が遅れまして申し訳ありません
127様の \.([a-z\d]{1,4}"IMG\b) で無事検索できることができました
しかし置き換えでは マッチした文字列が ..photo.$1 に置き換わるだけで $1にマッチした語句が適応されません
検索結果
○○○○○○.abc" IMG が ○○○○○○..photo.$1 となります
希望では
○○○○○○.photo.abc" IMG となることです(単純に .拡張子 前に .photo を入れたい)
先の書き込みでの訂正がありました 申し訳ありません
検索したい文字列には " と IMG の間に半角スペースがありました
半角があっても上手く検索にひっかっかっていますが
上手く置き換えができないのはこの半角が原因なのでしょうか?
引き続きご指導いただければ幸いです よろしくお願いいたします

129 :
>>128
ごめんなさい、こちらにも見落としがいくつかありました。
( Devasにはメジャーな正規表現エンジンが使われていると考えて作りましたが違ったようです )
・通常版 (上行=検索、下行=置換)
\.[a-zA-Z\d]{1,4}" ?IMG\b
.photo\0
・拡張子を小文字に変換する版 (例 .JPG → .jpg )
\.([a-zA-Z\d]{1,4})(" ?IMG\b)
.photo.\L\1\E\2
・ 「"」 と IMG の間のスペースがあっても無くてもスペース1個にする版
\.([a-zA-Z\d]{1,4})" ?IMG\b
.photo.\L\1\E" IMG
# \L と \E を削除すれば拡張子の小文字変換はしなくなります。
# 本当は .photo.photo.jpg のような複数回置換による重複を防ぎたかったんですが
# この正規表現エンジンでは無理なようです。(>_<)

130 :
>>129
度々のレスありがとうございます
正規表現エンジンにもいろいろなものがあるとは知りませんでした
お手数をおかけいたしまして申し訳ありません
いくつものパターンを示してくださいまして 
重ねて感謝いたします
通常版にて理想の変換ができました
今回教えて頂いたような知識を深めて、もっと便利にPCを使えるようになりたいと思います
勉強になりました ありがとうございます m(_ _)m

131 :
質問させてください。
phpのpreg_match関数でwebページから文字列を抽出したいと考えています。
以下を使用して抽出していますが、改行が含まれると抽出ができませんでした。
$text = '/value="(.*?)" id="latest"/';
preg_match($text, $source, $matches);
$word = $matches[1];
色々調べて$textを以下のようにしてみましたが、うまくいきませんでした。
$text = '/value="(.*?)" id="latest"/s';
$text = '/value="([\s\S]*?)" id="latest"/';
$text = '/value="((\n|.)*?)" id="latest"/';
何故うまくいかないのかよくわかりません。
なにかアイデアはありませんでしょうか?

132 :
俺なら
/value="([^"]*)"\s+id="latest"/

133 :
× ' '
○ " "
というオチ?PHPは触らないから分からない。

134 :
PHPなんか触らないから分からないけど両端のすらすらが余計とかなんかね

135 :
ごめんなさい、PHPの解説サイト見たら ' ' でOKでした。

136 :
PHPスレで聞いたほうが早いかも。原因が改行以外にある可能性も十分あるので
動かないサンプルコードをアップして見てもらえば確実に原因教えてもらえると思う。

137 :
↑$source に入るHTMLファイルも見ないと原因が分からない可能性アリ。

138 :
再帰と (?( ) yes|no) の組み合わせが楽しすぎる。もしかしたら宝の山かも。
マトリョーシカの中にダルマを入れられる感じ。

139 :
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html#NOTINCLUDED
「調整中」

気付いてもらえたのかそうでないのかいまいち分からんす。
このサイトはあんまアテにしないほうが良さそうだ。

140 :
>>125 の疑問点
\K が分岐の先頭にあることで処理速度に遅れが出るかどうか調べる。
また、\K を使わない書き方とどちらが早いか調べる。

141 :
比較対象追加 ( >>125 ) | (?=ABC) \K ABC

142 :
( >>125 ) | (?=ABC) \K ...
Perl6 正規表現 I
http://dl.dropboxusercontent.com/u/16667824/perl6/AdventCalender/1/5.html

143 :
Perl6::Overview::Rule
http://search.cpan.org/~lichtkind/Perl6-Doc-0.36/lib/Perl6/Doc/Overview/Rule.pod
[foo|bar]+
Perl6ではこれが正しい書き方になるらしい。初心者がハマりそう・・罠的な意味で。
先読み、戻り読みは書きにくくなった感が否めない。
文字クラスも加算、減算をしないときでも <> で囲う必要があるのはめんどくさい。
が、新しいオモチャとしては十分楽しめそう。ついでに英語も覚えてしまおう。

144 :
S05
http://feather.perl6.nl/syn/S05.html
> Last Modified: 11 Feb 2014, Version: 174
A05
http://search.cpan.org/dist/Perl6-Doc/share/Apocalypse/A05.pod
> Last Modified: 18 May 2006, Number: 5, Version: 7
perl6ではもはや正規表現ではないという意味を込めて 「regex」 と呼んでるらしい。
perl5の正規表現にあった 「ゴチャゴチャ感」 が綺麗に一掃されてる感がある。
:ratchet があるのは最高だなぁ。

145 :
http://anago.2ch.sc/test/read.cgi/applism/1393578532/139
http://anago.2ch.sc/test/read.cgi/applism/1393578532/157
この書込の方を正規表現でNGにしたいと思っています。
条件は
最初の行とは限らないが、「・」で初める行がある。何文字かの後、改行
その次の行は空の行
この2セットを正規表現で表すにはどうすればいいでしょうか?
.*?・.*?\r\n\r\n
としてみましたがダメでした。

146 :
>>145
2chブラウザ用でいいのかな?処理速度重視で作った。
(?:^|<br>)(?>\s*)・(?>[^<]*(?:(?!<br>).[^<]*)*)<br>(?>\s*)<br>

147 :
>>146
素敵!
神!
すっきりしました!
テキストじゃなくhtmlに対して正規表現だったのですね、勉強になりました。
ありがとうございました!

148 :
htmlに対してとかじゃなくログに合わせろと

149 :
(>>146)
(?:^|<br>) は分岐のバックトラックが残るから (?><br>|\A) としたほうが良さそう。
この2つは動作が完全なイコールではないので注意が必要、文頭が <br> だった場合に
絶対に \A がマッチ出来なくなるため。これが問題になることはほとんど無いだろうけど。

150 :
(>>144)
S05
ttp://perlcabal.org/syn/S05.html
>Last Modified: 27 Feb 2014
Jeffrey Friedl
ttp://regex.info/
Jeffrey Friedl - 第3版のコード ※ CGIなので直リンは避けたほうが良い。
regex.info/listing.cgi?ed=3&p=all
第2刷に対する正誤表 - 詳説 正規表現 第3版
ttp://www.oreilly.co.jp/books/9784873113593/#errata0
Google Books 詳説 正規表現 ※ 立ち読み可能
ttps://www.google.co.jp/search?tbm=bks&hl=ja&q=%E8%A9%B3%E8%AA%AC%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE

151 :
ascii抜粋
!"#$%&amp;'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

152 :
>>142
>Perl6 正規表現 I
ここのサイト主、先読みを理解出来てないな・・。beforeとafterも逆だし。

153 :
tes

154 :
windowsXP ショートカットのパス
---------
C:\WINDOWS\system32\cmd.exe /k C:\test.pl6
---------
/k は実行後にウインドウを閉じないオプション。
拡張子 pl6 を perl6.exe に関連付けしておく。
test.pl6 にperl6のテストコードを書いて実験する。

155 :
#!/usr/bin/perl6
my $str;
$str := "AAABBBCCC";
say $str.trans( 'A'=>'a', 'B'=>'b', 'C'=>'c' );
say "\n"~$str;
---結果---
aaabbbccc
AAABBBCCC

156 :
### winXP で文字コードの 『et_EE.ISO8859-1』 を使えるようにする手順
!!! 試すときは仮想マシンを使うこと。環境が壊れて文字化けだらけになるため。 !!!
1、「コントロールパネル」 → 「地域と言語のオプション」
2、「日本語」 や 「日本」 と設定されている所を全て 「エストニア」 に設定する。
3、PC再起動
=> perl から et_EE.ISO8859-1 が使用可能になる。
順番が s z t u に変わったことを確認。ただ、 [a-z] で t 以降もマッチするのは変わらず。
[FreeBSD] - 2005/9/3 ( => FreeBSD4.10? )
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-September/014529.html
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-September/014531.html
正規表現 Part11
http://toro.2ch.sc/test/read.cgi/tech/1363769640/330,325

157 :
FreeBSD - 2005/9/5
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-September/014529.html
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-September/014531.html
正規表現 Part11
http://toro.2ch.sc/test/read.cgi/tech/1363769640/330,325
[[ winXPで et_EE.ISO8859-1 を使う ]]
1、「コントロールパネル」 => 「地域と言語のオプション」
2、「日本」 「日本語」 を全て「エストニア」 に変更。
3、PC再起動
perlで s z t u の順になるのを確認。しかし [a-z] が t u 以降にもマッチするのは変わらなかった。
=> 順番が変わることによるトラブルを避けるために対策されている?
※ これをやると環境の一部がエストニア語で上書きされ日本語に戻せなくなるので
試すなら 「VM ware」 や 「Virtual PC」 等の仮想マシンで試しましょう。
2005/9/5 に問題報告がされているのでそれ以前にリリースされたFreeBSDを使って試せば
完全に再現出来る可能性大。そして 4.11で再現出来なくなっていれば対策が取られたということになる。

158 :
--------c:\test.pl-----------
use locale;
print +(sort grep /[a-z]/i, map { chr } 0..255), "\n";
--------c:\test.pl-----------
C:\>perl test.pl
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsSzZtTuUvVwWxXyY
C:\>perl -v
This is perl 5, version 16, subversion 3 (v5.16.3) built for MSWin32-x86-multi-thread
-----------------------------------
↓これを使わなくても順番が変わった。
use POSIX qw(setlocale LC_ALL);
setlocale(LC_ALL, "et_EE.ISO8859-1");
コンパネで「エストニア」と指定しただけで「et_EE.ISO8859-1」は未指定の状態。
-----------------------------------
/[a-z]/i を /\w/ に変えると英字以外の文字も英字の間に
挟まっていることが確認出来る。

159 :
--------c:\test.pl-----------
use locale; # これが無いと順番が変わらない
use POSIX qw(setlocale LC_ALL); # コメントアウトしても変化なし
setlocale(LC_ALL, "et_EE.ISO8859-1"); # コメントアウトしても変化なし
my $abc;
$abc = "STU";
$abc =~ s/[A-Z]/hit/g;
print $abc."\n";
--------c:\test.pl-----------
[結果] hithithit
順番が変わっていれば S にしかマッチしないはずだが3文字すべてに
マッチしている。
LC_ALL を LC_CTYPE や、 LANG などに変えたり、test.plを保存するときの
文字コードをutf-8からshift_jisに変えたりしても結果変わらず。
XPsp3+perl5.16.3の環境で S だけにマッチさせる手段は無いと思われる。

160 :
>>156
「辞書順」はロケールに依存するが「文字コード順」は文字コードに依存する、んじゃね?
文字集合の範囲指定が文字コード順と定義されているなら、
いくらロケール切り替えても文字コード切り替えない限り無意味だろう。
で、文字集合の範囲指定ってどっちだと定義されてるの?

161 :
>>160
俺はロケールや文字コードの知識はほとんど無いんでよく分かってない。
↓は winXPsp3 + perl5.16.3 + ロケール = 「日本」 の環境での実験結果。
・ [ァ-ィ] が ア にマッチするか実験。( 文字コード順ならマッチしないはず )
----------------------------------------
use locale;
if ( "ア" =~/[ァ-ィ]/ ){ print "hit\n"; }
else { print "no hit\n"; };
----------------------------------------
結果: hit ( マッチしたので文字コード順ではない )
この環境での範囲指定は↓の順みたい。これはshift_jisの並び順とは違う。(これが辞書順?)
----------------------------------------
_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZァアィ
スセソタチッツテトナニヌネノハヒフヘホマミムメモャヤュユョヨラリルレロワヲン
----------------------------------------
文字コードでなくロケールに依存するという発想は思い付かなかったわ、そっちの線で
また実験しながら遊んでみるよ、辞書順とやらも調べてみる。ヒントありがとう。

162 :
(>>156)
ついに [a-z] が t 以降にマッチしない動作の再現に成功!
et_EE.ISO8859-1 の代わりに et_EE.ISO8859-15 を使ったら再現出来ました!
今まで助言をくれたみなさんありがとう〜。自分一人じゃ絶対無理だった。
↓こちらの方々にも感謝〜
初心者もOK! FreeBSD質問スレッド その117
http://toro.2ch.sc/test/read.cgi/unix/1380865524/938-954n
詳しい手順はもう少し調べて整理してから載せます。

163 :
正規表現道場 in ジオシティーズ
http://akiba.geocities.jp/hp20140401/
とりあえず場所確保。

164 :
2ch .scに移転しました。
正規表現道場 Part2
http://nozomi.2ch .sc/test/read.cgi/php/1348048723/l50
■ 2ch.scの問題点
・ 2chscがNGワードになってるので正規表現をスレに貼るのに支障が出る。何より言論統制はイクナイ。
・ 管理人が今後どう動くか予測が付かない。
 自暴自棄になりIPや書き込み履歴を大公開して逃走する可能性すらある。会社IPの人は注意。

165 :
もうこっちに帰ってくるなよ

166 :
転載禁止の所を転載している謎技術とか行ってるけど、現にコレって転載だろ。
いろいろまだ抗争?も解決してないし、それが落ち着くまではこっちで様子みるべ。
http://otona2ch.sc

167 :
[a-z] が t u v w x y にマッチしない件 ( 2014/4/13 )
http://akiba.geocities.jp/hp20140401/2014/001.html

168 :
うーん、サイト名が長すぎだなぁ。そのうちに検索結果で他と被りにくい名前に変えます。
ページタイトルも「エストニア」は入れるべきだった。

169 :
せいきなんとか
http://akiba.geocities.jp/hp20140401/
ググりやすさ重視の名前にしました。「正規表現」の書きにくさを回避。
検索でも他サイトと被りそうにないし。

170 :
>>167.sc
余談のsedのロケールのバグ、記事にロケール出てこねぇぞと思ったらコメント欄の話か。
しかしこの記事もコメントの指摘もなんか見覚えあるな、と思ったらこの通りすがり俺だったよ。
処理中の文字が延々巻き戻るのは見たときは謎かったなぁ…
文字範囲の決定にもロケール使ってるとは想像もしてなかったわ

171 :
>>170
デバック出来るとかすごいね、解析GJ。肝心のバグはもうfixされてるん?
>文字範囲の決定にもロケール
ロケールの知識が無い俺にはsortと文字範囲で順番が違うperlの仕様の
ほうが謎だった。sortと文字範囲の両方を使うコードでごちゃごちゃになりそう、ってね。

172 :
Yahoo! Pipesの仕様なんて知らんが
文字列の開始も終わりも指定してないということは
.*/で一番最後の/までが対象として消える可能性はある

173 :
>>172
ありがとうございます、確かめてみます

174 :
ああ、fixもなにも2010年で更新止まってるんだね。
sed for Windows
http://gnuwin32.sourceforge.net/packages/sed.htm

175 :
タグの中に "ある文字列" を含まない正規表現 : せいきなんとか
http://akiba.geocities.jp/hp20140401/2014/002.html

せいきなんとか でググっても一向にヒットしない件。失敗したか・・。

176 :
あ、そうか <a href=〜>せいきなんとか</a> みたいにリンクタグで
囲ってないからか・・

177 :
実験に使ったヤフーのHTMLソースの中に

d<a.length;

みたいなjsが2つあるのが発覚。<a\b がこれに誤爆するから
実験結果に大幅な狂いが出ている可能性大。

論文の撤回するなら今でしょ。

178 :
jsの中に <a href="〜"> 〜 <\/a> も発見。だめだこりゃ。

179 :
差分
http://akiba.geocities.jp/hp20140401/2014/002.old.html

1、\s を \b に書き換えると2〜3倍遅くなる → jsへの誤爆による間違い

2、/xsigaa を /xsg にすると 0.370 秒
   → i を消したことで小文字の "xyz" にマッチしなくなる、致命的ミス。

3、最適化の影響が強烈に → 間違いを根拠にした思い込みだった。

180 :
いちいち <br> を付けるのが面倒だから <pre> 〜 </pre> で手抜きしたら
コピペした時に改行が反映されずに1行に繋がった文字列がクリップボードに入ってた。

てことで <br> を使ってアップし直しました。

クリップボードを置換するアプリで実態参照の置換と一緒にやれば楽そう。
--------
そういえばココって連投規制あるのかな・・

181 :
>>179 は pre のままなので試したい人は↓の部分を選択してコピペしてみてね。
divをまたいで選択すると1行に繋がった。( win + firefox )

--------------
<1> 先読みを使ったシンプルなもの
m/
<a\s[^>]*>
(?:
--------------

182 :
$TestString = "置換したいテキスト";

# <br> 以外の置換をしないなら (0) にする。
if (1){
$TestString =~ s/ & /&/xg;
$TestString =~ s/ < /</xg;
$TestString =~ s/ > />/xg;
$TestString =~ s/ \" /"/xg;
$TestString =~ s/ \' /'/xg;
}
$TestString =~ s/ \n /<br>\n/xg;

183 :
↑失敗。

$TestString = "置換したいテキスト";

# <br> 以外の置換をしないなら (0) にする。
if (1){
$TestString =~ s/ & /&amp;/xg;
$TestString =~ s/ < /&lt;/xg;
$TestString =~ s/ > /&gt;/xg;
$TestString =~ s/ \" /&quot;/xg;
$TestString =~ s/ \' /&apos;/xg;
}
$TestString =~ s/ \n /<br>\n/xg;

184 :
Perl 5.14 から使える正規表現のオプション : せいきなんとか
http://akiba.geocities.jp/hp20140401/2014/003.html

185 :
(>>179)
>1、\s を \b に書き換えると2〜3倍遅くなる → jsへの誤爆による間違い

後ろをみないマッチで書くことよりこういう対策のほうがよっぽど大事だな・・。
閉じタグが無い場合にどこかで走査を打ち切るような書き方をするべきか。

186 :
(試作) 文字数制限

my $cnt =  0; my $str = ""; my $res = "";
for ( my $i=0; $i<100 ; $i++ ){
$str = '<a href="./">' . "e" x $i . '</a>';
if ( $str =~ m/
<a\s[^>]++>
(?{ $cnt = pos($str); })
(?:
  (?:
    [^<]
    |(?!<\/?+a\b).
  ){1,5}
  (?(?{ 30 < pos($str)-$cnt;  })(*SKIP)(*PRUNE)(*F))
)*+
<\/a>
/xsgiaa
){ $res .= "$i,"; } # if
} # for
print "$res\n";

187 :


my $cnt =  0; my $TestString = ""; my $res = ""; my $err="";
for ( my $i=0; $i<50 ; $i++ ){
$TestString = '<a href="./">' . "e" x $i . '</a>';
if ( $TestString =~ m/
<a\s[^>]++>

(?:
  [^<]
|
  (?!<\/?+a\b).
){0,30}+

(?:
  <\/a>
|
  (?{ $err .= pos($TestString) . ","; })
  (*SKIP) (*PRUNE) (*F)
)

/xsiaa
){ $res .= "$i,"; } # if
} # for
print "$res\n";
if ($err){ print "<\/a> 404 => $err\n"; }

188 :
(>>186) /g 不要。

189 :
連投規制?

190 :
線形代数を学ぼう
http://yonex1.cis.ibaraki.ac.jp/~yonekura/math/

高等学校数学C 行列
http://ja.wikibooks.org/wiki/%E9%AB%98%E7%AD%89%E5%AD%A6%E6%A0%A1%E6%95%B0%E5%AD%A6C_%E8%A1%8C%E5%88%97

行列の積
http://www.geisya.or.jp/~mwm48961/kou2/matrix2.html

行列のできる法律相談所
http://www.ntv.co.jp/horitsu/

191 :
行列の計算
http://www2u.biglobe.ne.jp/MAS/perl/waza/matrix.html

どわすれ Perl メモ
http://www001.upp.so-net.ne.jp/hata/dowasure_perl.html

perldoc.jp : 配列の配列の定義とアクセス
http://perldoc.jp/docs/perl/5.6.1/perllol.pod

192 :
ファイル検索ツールでパスを入力する時、「\」「/」を入れると候補が0になってしまいます
d:\\abc\\123\\ のように入力しているのですが、間違っていますか?

193 :
そのファイル検索ツールのところで聞けばー

194 :
Regexp-Assemble : 正規表現の最適化モジュール
http://search.cpan.org/dist/Regexp-Assemble/

195 :
変態的正規表現モジュールを支える Regexp::Assemble::Compressed
http://perl-users.jp/articles/advent-calendar/2010/hacker/6

>「ばよえ〜ん警報発令!?」でお馴染みの

ww

196 :
404 Blog Not Found : perl - Regexp::Assembleのススメ
http://blog.livedoor.jp/dankogai/archives/50812865.html

197 :
(>>195)
> (?-xism:[1-9a-zな-の])

ロケールによってはこれは・・

198 :
(>>197)
あ、perlでは範囲指定は影響しない(?)んだった。

199 :
Regexp::Assemble のインストール

もばぎつかい の 新ぶろぐ » 正規表現生成モジュールってあるんだ・・・
http://mobagitukai.xrea.jp/wordpress/archives/489

200 :
ubuntu で cpan

Ubuntu日本語フォーラム
Ubuntu 上で perl モジュールはどのようにしてインストールなさっているでしょうか?
https://forums.ubuntulinux.jp/viewtopic.php?pid=8887

201 :
use Regexp::Assemble::Compressed;
my $rac = Regexp::Assemble::Compressed->new;
for my $char (1 .. 9, 'a' .. 'z', qw(ぁ あ い ぃ う ぅ)) {
$rac->add($char);
}

[結果]
(?^u:[1-9a-zぁ-う])

/u が付いてきた。よく出来てるなぁ。

202 :
( '[a]', '[b]', '[cd]', 'e') => (?^:(?:[abe]|[cd]))
( 'a', 'b', '\cd', 'e') => (?^:[\cDabe])
( '\x61', 'b', '[cd]', 'e') => (?^:(?:[abe]|[cd]))

( '\c)', 'a') => (?^:[\c)a])
( '(\c))', 'a') => (?^:(?:(\c))|a))

203 :
タライ
http://en.wikipedia.org/wiki/Trie

204 :
perldoc.jp : Benchmark - Perl コードの実行時間のベンチマークを行なう
http://perldoc.jp/docs/modules/Benchmark-1.10/Benchmark.pod

> use Benchmark qw/:all/;

> この表は遅いものから早いものの順にソートされ、それぞれのテスト間の
> 速度の差を百分率で表示します。

> 空ループのシステム時間は、実際のコードを含むループのシステム時間よりも
> 多少多くかかることがある

205 :
(>>200)
ubuntu13.10日本語Remix版にはデフォでRegexp::Assembleが入ってる?
何もしてないのに使えた。

206 :
Regexp::Assemble - ubuntu13.10日本語Remix版 でのパス
/usr/share/perl5/Regexp/Assemble.pm
バージョンは0.35

207 :
print "\cあ"; ←エラー表示でAssemble.pmのパスが分かる。

208 :
↑嘘
-----------------------------------
#!/usr/bin/perl
use Regexp::Assemble;
my $ra = Regexp::Assemble->new;
$ra->add( '\cあ' );
print $ra->re;
-----------------------------------

209 :
win - perl5.16.3
-----------------------------------
Character following "\c" must be ASCII at C:/Perl/site/lib/Regexp/Assemble.pm li
ne 1003.
-----------------------------------

210 :
ペールで文字コード変換

404 Blog Not Found : perl - Encode 入門
http://blog.livedoor.jp/dankogai/archives/51031595.html

211 :
はてな: 404 Blog Not Found 「Perlの文字コードの記事のまとめ」
http://d.hatena.ne.jp/perlcodesample/20100803/1282057261

ホリエモンにぶっこ抜かれた人らしい

212 :
404 Blog Not Found: regexp - で Apache Combined Log を Parse する
http://blog.livedoor.jp/dankogai/archives/51853185.html

>qr/\"((?:\\[\\\"]|.)*?)\"/
『"\"』に誤爆する。けどデータ上は大丈夫なのか。これはよっぽど
自信がないと書けない書き方だ。

Q1、強欲を使わないのは何故か。
*?のほうが早いから?使っても変わらないから?それとも互換性の問題?

Q2、ループ展開のようなことは出来ないのか否か。直感的にはピリオドで
1文字ずつの繰り返しでマッチさせてるので相当遅いイメージ・・
しかもピリオドがあるのは分岐の後半。

213 :
古いperlとの互換性の問題なら新しいperl用と古いperl用の2種類を
用意すれば強欲が使えるようになったりして?

強欲 & ループ展開 で相当早くなるはず。

214 :
正規表現でなく文字列操作でやるという手も。正規表現より早いかも。

215 :
apache ログファイル (Combined Log / Common Log )
http://httpd.apache.org/docs/2.0/ja/logs.html

Common Log
-----------------
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HT
TP/1.0" 200 2326
-----------------

Combined Log
-----------------
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HT
TP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
-----------------

216 :
よし、出来た。あとでHP作ってここに貼ります。

217 :
小飼 弾が手負いのうちに容赦なくツッコミを入れておく : せいきなんとか
http://akiba.geocities.jp/hp20140401/2014/006.html

218 :
正規表現を何度も使うより一度で全部取得する書き方にしたほうが
早いのかも知れない。壊れた不正なデータがないのが前提だけど。

219 :
qr/\"(.*?)\"/
vs
qr/\"([^\"]*)\"/

上のほうが9%早い。

220 :
re2 vs 「一度に全部取得」

( \" あり ) => 後者が14%早い。
( \" なし ) => 後者が14%早い。

\" ありでも ng を超えられることが確定。
2つに分ける必要のない正規表現を分けて遅くなったということか・・。

221 :
## メールアドレス

404 Blog Not Found : regexp - 'test@[127.0.0.1' . "\\\x1f]" はRFC2822準拠
http://blog.livedoor.jp/dankogai/archives/51190099.html

雑技たん : メールアドレスの正規表現
http://www.din.or.jp/~ohzaki/mail_regex.htm

なんでこんな規格にしてもうたん。。 >RFC

222 :
↑移転先

「danコガいはもう正規表現をblogに書くな」と言わせないでくれ
http://blog.everqueue.com/chiba/2009/03/20/151/

223 :
ASCII文字コード
http://e-words.jp/p/r-ascii.html

> \x1f

US Unit Separator ユニット区切り
( \x20 の1つ前にある制御文字 )

224 :
> \\\Sは明らかに手抜きであり、正しくは\\[\x01-\x09\x0B-\x0c\x0e-\x7f]

B だけ大文字なのは何故?

あとこれ、>>76のツールで階層表示にしてみると無駄なカッコが多いのが分かる。
ツール使えば十分手作業で削除出来る出来る量だからやればいいのに。

225 :
1.正規表現をクリップボードにコピー
2.>>76 のツールの 貼り付け ボタンを押す
3.ctrl + W または 左上のフォームをダブルクリック してフォーム最大化
4.要らないカッコを手動で消す

Web上で階層表示してくれるサイトってないのかな、あるととても助かる。
このツールはwindows上じゃないと動かないから。

226 :
あれ?そういえば文字数の制限が無い。
メールアドレスに文字数制限って無いのかな。
この正規表現なら1GBのメールアドレスも通ってしまう件。

↓これ、ループ展開出来るね。


"
(?:
  \\
  [^\r\n]
  |
  [^\\"]
)*
"

227 :
雑技たんのは 0-127 で作ってるっぽいけど弾たんのは [^\r\n] によって
マルチバイト文字もマッチするような気がする。RFCではどちらが・・?

228 :
"あ"@yahoo.com

弾たん (RFC2822) => マッチ
雑技たん (RFC 5322) => マッチせず

229 :
(>>224) の \S はマルチバイト文字にもマッチするが、置き換えられたものは↓これ。

[\x01-\x09\x0B-\x0c\x0e-\x7f]

同じように [^\r\n] や [^\\"] もマルチバイト文字に
マッチすることを見落としているんだろうか?
あと 128-255 にもマッチする。

詳しい人おらんかね?

230 :
まぁいいや、間違いと分かってて放置してるのかも知れないし。
RFCに興味がない自分がこれ以上首を出すのもなんだか・・だし。

メールアドレスの話はこれでおわり。

231 :
(>>225)
もし作る人がいたらこうして欲しいな。
(
 X
|
 Y
)

これだと消していいカッコかどうかが分かりにくい。
(
 X
 |
 Y
)

232 :
・階層ごとに色分け
・メタ文字の着色
・階層の折り畳みor展開
・階層化された正規表現の一行化機能
・掲示板に貼り付けるための文字参照化
・言語ごとのメタ文字の対応

さすがに欲張りすぎか。

233 :
Bug Catharsis : 正規表現の起源
http://zecl.hatenablog.com/entry/20070301/p2

234 :
どさにっき 2.0 : #!/usr/bin/env
http://ya.maya.st/d/200606c.html#s20060625_1

235 :
詳説 正規表現 第3版 の誤植( 日本語版 / 初版第1刷 ) : せいきなんとか
http://akiba.geocities.jp/hp20140401/2014/007.html

236 :
sc連投規制中なう。

237 :
(sc>>212)
>qr/\"((?:\\[\\\"]|.)*?)\"/
> これはよっぽど自信がないと書けない書き方だ。
今考えると弾たんは単に2文字否定の作り方を知らなかっただけだな・・。
知ってたらこんなあやふやなものを作ろうなんて思わないし。
早さに拘るのに早い正規表現の作り方を知らないというちょっと残念な弾たん。
他の正規表現を見ても正規表現自体のスキルは高くない。
なんでもこなすオールラウンダーだから薄く広くになるんだろうな。
しかしこの程度の正規表現スキルでcpanのモジュール作って大丈夫なんだろうか。
探せばバグが出てきそうな予感。

238 :
正規表現のスキル自体とモジュール作成能力には直接的な相関関係はないからなあ・・・

239 :
(‥ )フーン

240 :
そういう指摘するだけでモノ作ったり貢献してなさそうなお前はもっと駄目な人間だから安心しろ。
弾はなんだかんだ色々作ってるし色々な方面に貢献してる。

241 :
指摘することも立派な貢献だと思いますよ。現に指摘によって処理時間が半分以下になってますし。

242 :
まだ連投規制が解除されないなう
## m//
キャッシュを保持してない状態では空文字列にマッチする。
うっかりするとバグの原因になり得る。

243 :
.scの連投規制は俺も食らったけど(専ブラだと「書き込めたかも…」で書けてない状態)、
Webブラウザで投稿したらBOT疑惑なのでCapchaしろになってそれで解除できた。
URLを貼りまくって連投規制になった場合は知らん。

244 :
>>243
俺の場合は「連続投稿は禁止されています。Error!」って出るだけ。
普通に連続投稿が原因で規制食らってるみたいだからもうダメかも分からんね。
人が少ないから自然に独り言みたいになるのにそれで規制されたら
ますます人少なくなるなw

245 :
たらこテョンねるの話はたらこテョンねるでやれ

246 :
パールを使った正規表現
http://omatomen.net/archives/1002062987.html

247 :
>>2 正規表現メモ
(?num) の説明文にある・・
-------------------
(\()?[^()]+(?(1)\))
-------------------
これは (?num) とはまったく関係ない正規表現。ただの条件文。

248 :
>>247
----------------------------
(?(R)...) PCREで、再帰的パターンの開始を示します。
<(?:(?(R)\\d++|[^<>]*+)|(?R))*>
----------------------------
説明文は間違い。これは条件式の条件。\\d は \d の間違い。
perldoc.jp
http://perldoc.jp/docs/perl/5.14.1/perlre.pod
(?(condition)yes-pattern|no-pattern) の項目を参照。

249 :
詳説 正規表現のAmazon値 (1年前との比較)
・古本
初版 &amp;nbsp;500円 → 1998円
2版 1600円 → 3150円
3版 4000円 → 3709円
・新品
3版 5184円
Amazon - "正規表現"
http://www.amazon.co.jp/s/field-keywords=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE

250 :
文字参照の処理、間違えてますよ > 2ch.sc

251 :
ttp://cpansearch.perl.org/src/DANKOGAI/Unicode-Char-0.02/lib/Unicode/Char.pm
↓ ^ か \A 忘れてね?
------------------------
$method =~ s/.*:://o;
------------------------

252 :
----------------------------------------------------------
my ($hex, $name) = ($line =~ /^([0-9A-Fa-f]+)\s+(.*)/);
next if $name =~ /[a-z]/; # range, not character
----------------------------------------------------------
2行目だけ小文字に限定されてる。これで良いのか悪いのかは分からないが。

253 :
ttp://cpansearch.perl.org/src/DANKOGAI/Lingua-JA-Numbers-0.04/lib/Lingua/JA/Numbers.pm
-----
せっかく [eE] と書いてるのに /i
= ($num =~ /([+-])?(\d+)(?:\.(\d+))?(?:[eE]([+-]?\d+))?/io);
-----
ちゃんと動くんだろうけどアンカー付けないのが気持ち悪い。
$int =~ s/(.*)(.{48})\z/$2/o;
-----
これミスでね? [k|g]
if ($style =~ /(?:romaji|[k|g]ana)$/){

254 :
本人に直接言う勇気がないらしい。まこと残念な人である
皆はこうならぬように

255 :
今度は大文字限定。
$ja =~ tr/[G-Z]//d;
ITPro: tr///d
http://itpro.nikkeibp.co.jp/article/Reference/20080930/315784/

256 :
あれ、/o が使われてる。なんでapache logのltsv変換には
使われてなかったんだろう。ああいう時こそ効果的なのに。

257 :
■ combined2ltsv.pl の re で /o の有無をタイム計測
/o なし
12724/s
/o あり
31689/s
/o あり は2.5倍早い。これは報告したほうがいいかも。

258 :
(>>251)
これに /o がついてるとなんか笑ってしまうw
余談追加。俺は報告なんかしないんで報告したい人がいたらしてね。
小飼 弾が手負いのうちに容赦なくツッコミを入れておく
http://akiba.geocities.jp/hp20140401/2014/006.html

259 :
(>>253)
---------------
use utf8;
---------------
\d
---------------
弾たんにならこれで通じるだろう。(確信)

260 :
神戸大:オートマトン
ttp://kurt.scitec.kobe-u.ac.jp/~kikyo/lec/07/automaton/k5.pdf
行列の次は集合か・・もう忘れたよ・・覚えたことないけど。

261 :
関西学院大学: 集合
http://www.kwansei.ac.jp/hs/z90010/sugaku1/kakuritu/syugo/set.htm
とっても分かりやすい。・・あれ?これ大学でやる内容か?中がっ(ry

262 :
↑ /hs/ = ハイスクールでした。

263 :
Q、 perlの正規表現では \A\z == ε である。では、 ??? == φ の ??? は何になるか。

264 :
if( () =~ "" ){ print "hit\n"; } else { print "no\n"; };
結果 hit
答え、なし

265 :
() と "" を比較して no を返す方法はあるか。( φとεの比較 )
() eq ""
() == ""
"" eq undef
"" == undef
() eq undef
() == undef
すべてtrueが返る。

266 :
弾たん : perl - にも真偽値は存在する
http://blog.livedoor.jp/dankogai/archives/51268304.html
ちなみにブログのトップではGoogle Chromecastをボロクソに叩きつつ、Chromecastへのamazonアフィを
張るというすご技を展開されております。
こういう人相手に>>258を報告しにいってもスルーされるだけだと思うよ。カネにならないからね。

267 :
てすてす &

268 :
>>266
それ、お前向けにカスタマイズされてるだけだろ。

269 :
こういう陰口叩くやつよりマシ

270 :
解除北?

271 :
test

272 :
test

273 :
test

274 :
javascriptでhtmlタグ内以外での検索をしようとしていますが、上手く行きません。お助け下さい。
lat = 'あい';
body = '<a href="あい">あい</a>';
reg = new RegExp(">[^<][\s\S]*?" + lat + "[\s\S]*?<","m");
body.match(reg);
console.log(reg.index);
13が返って欲しいのですが、undifinedになります。

275 :
当スレは中級者以上向けになっているのでこちらへ。
Regular Expression(正規表現) Part12
http://peace.2ch.sc/test/read.cgi/tech/1387257592/
jsならieか否か、または両方かも書いたほうが良いでしょう。

276 :
>>275
ご誘導ありがとうございます!

277 :
http://home.hiroshima-u.ac.jp/fujita/Class/Kisoron/set.pdf
計算機基礎論 - set.pdf

278 :
>>1
関連スレのテンプレ入り
理論計算機科学
http://peace.2ch.sc/test/read.cgi/tech/1403321199/

279 :
確率の基本 - 青空学園
http://aozoragakuen.sakura. ne.jp/probability/probability.html
豪快に脱線中。言論統制対策でスペース。

280 :
このスレって誰かの日記帳スレだったの?

281 :
俺のメモ帳だけど?

282 :
ならコテ付けろ

283 :
確率 1/10 で当たるんなら 10 回やれば当たる?
http://www.math.kobe-u.ac.jp/HOME/saji/mathyomi/probability.html
確率は正規表現の処理効率向上に使う。
"|" による分岐で確率の高いほうを前に置いたほうが早くなるetc..

284 :
## 確率の実験
my $cnt=0;
for (my $i=0; $i<1000000; $i++){
if ( int(rand(3)) == 0 || int(rand(3)) == 2 || int(rand(3)) == 1)
{
$cnt++;
}# if
} #for
print "$cnt\n";
__END__
&& ・・・ A∧B
|| ・・・ A∨B

285 :
傘スレの無能っぷりが酷い。正規表現作ってやりゃ済む話じゃないか。

286 :
\Gを知らないのか使えないのか知らんけど・・
テキストエディタの正規表現には関わりたくないや。

287 :
>>286
知らなかったの方だけど、こそこそ指摘するとか鬱陶しい奴だな…

288 :
\G(?:@command|,)
タダでスキルアップさせてやったんだから文句言うなっしー。

289 :
ときわ台学
http://www.f-denshi.com/
代数系、線形代数。

290 :
★2ch勢いランキングサイトリスト★
◎ +ニュース
・ 2NN
・ 2chTimes
◎ +ニュース新着
・ 2NN新着
・ Headline BBY
◎ +ニュース他
・ Desktop2ch
・ 記者別一覧
◎ 全板
・ 全板縦断勢いランキング
・ スレッドランキング総合ランキング
◎ 実況込み
・ 2勢
・ READ2CH
・ i-ikioi
※ 要サイト名検索

291 :
> ※ ヤフーのHTMLには javascript が使われており、正規表現がコードの一部に誤爆します。
・・・ならテストデータ変えろよと。

292 :
テストし直すのが面倒でねぇ・・。

293 :
群論入門
http://www.nurs.or.jp/~lionfan/ironna_05.html
その1 - 17P
× 60度
○ 120度

294 :
preg_replaceで文章内に<br /><br />が出現した以降の文字をすべて削除するのはどうすればいいですか?

295 :
>>294
<br /><br />.*$

296 :
>>295
サンクスできました

297 :
「正規表現」などを使う場合には、【regex railroad diagram】を利用すれば、とても分かりやすく「図式化」してくれます
http://plus.appgiga.jp/masatolan/2014/10/31/54305/

298 :
2ch専ブラで「1文字だけしか書かれていないレス」をNG処理する場合はどういった表現をすればいいのでしょうか

299 :
概出

300 :
そこをなんとか

301 :
もとかりやゆいか

302 :
正規表現で電話番号を確認するにはどうしたらいいですか?
固定番号
携帯番号
フリーダイヤル
国際番号
といったものがあるのでわかりません。(緊急ダイヤル系は無視して構いません)
どなたか正規表現を教えてください

303 :
電話番号とは何かって質問はスレ違い。
自分の定義する電話番号はこうですって(正規表現以外の方法で)提示してください。

304 :
>>303
そういう質問はされてないけどな

305 :
緊急ダイヤル系は無視して構いませんって、つまりそれが何だか含めた電話番号とは何ぞやを
考慮して回答しろって書いてあるじゃねーか。
しるかそんなモン。

306 :
>>302
こちらの方のサイトを参考に
http://blog.livedoor.jp/nipotan/archives/51644244.html
https://github.com/sakatam/a-better-jp-phone-regex

307 :
>>306
ありがとうございます!
参考にしてみます

308 :
データから例をあげないと書きようがないよね
ハイフンあったりなかったり、それら含めて全部なのか・・・

309 :
1.文字列の末尾にある数字を1〜2桁まで抽出したい(末尾に1文字までなら数字以外が入っても構わない)

2.抽出した数字が1桁の場合は先頭に「0」を足して二桁に変えたい

これを正規表現1行で行いたいのですが
 検索:.*?(\d{1,2})(\D{0,1})$
 置換:\1
これで1つ目はいけたんですが、さらに2つ目の内容を正規表現1行で行うことは可能でしょうか?

310 :
よく使う正規表現のまとめ

http://know-how-tree.com/archives/1271

311 :
アフィ注意

312 :
間違いあるしまとめすぎてて意味不明だしゴミだ。

313 :
>>310
しっかり纏められて助かります^^b ありがとう!

314 :
ゴミの分際で広告主張しすぎなんだよ

315 :
>>310
ありがとう!!!分かりやすい!!

316 :
> \G 直前の一致文字列の末尾

こう覚えちゃう人多いんだよねぇ。こういうサイトが嘘広めてるんだろうな。

317 :
お前はいったい何なんだ?
必死に勉強したわけでもなく、必死に働いたわけでもなく
何も築かず、耐えず、乗り越えず、ただダラダラ過ごし
自分の都合の良い妄想だけを垂れ流す。

お前は今のゴミみたいな人生を、今は仮、本当の自分を使っていないだけ
そう飽きず言い続け、結局はそのまま死ぬ

最底辺キモヲタで底辺人生の今が本物であることに、そろそろ気が付こうぜ!

318 :
YamadaTaro12345123ClassAこれを置換して、下の名前の頭文字だけ残して、YamadaT12345123ClassAに置換したいのですがどのような正規表現になるでしょうか。
姓と名前の間にスペースがないので、先頭から2番目の大文字とそれに続くアルファベットを\2として後方参照するしかないかと思うのですが、宜しくお願いします

319 :
input CNT;
input RST;
input CLK;
output [9:0] OUT_P;

これを
CNT
RST
CLK
[9:0]OUT_P
に変換
お願いします

320 :
改行や余計な文字が入ってる場合のNGはどう書けば良いでしょうか?
例です

V
i からきますた!


この[V∨vv]→[IIii]→[PPpp]→NGを完成させたいです

321 :
[V∨vv][^IIii]*[IIii][^PPpp]*[PPpp]

尚、テストはしてない

322 :
>>321
出来ました!
ありがとうございます!
何故出来たかよく分かんないので研究します!

323 :
青空にある文章で章ごとに一、二・・・百八十三と数字
がついているのですが、それを一括して置換するにはどうすれば
いいでしょうか?漢数字の間には改行がついています。

324 :
質問よろしいでしょうか?
一文字のみのレスを正規表現で指定するにはどうすればよいでしょうか

325 :
^ ?. ?$

326 :
マ イ ン ド コ ン ト ロ ー ル の手法

・沢山の人が、偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法

偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い

靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト

10人に一人は カ ル ト か 外 国 人

「ガ ス ラ イ テ ィ ン グ」 で 検 索 を !,,,,

327 :
「ちな」をNGにしたいけど、「ありがちな」や「ちなみに」はNG対象外としたい
ちな(!?み)
これで「ちなみに」は対象外にできたんだが、「ありがちな」も同時に対象外にするにはどうしたらいい?

328 :
検索したけど

329 :
「ちなみに」の略として「ちな」を使ってるのを想定してるとゲスパーするが、
「ちな」を含む言葉なんて沢山あるから、それらを考慮し始めるとキリが無い
行頭にある場合とかで妥協しときなせ

330 :
>>329
ご明察
100%問題なくNGにできるとは思ってなくて、NGの誤爆が減ればいいなって感じで質問してみた
そもそも、 "AB" には一致して "xyAB" には一致しない正規表現って書けるんだろうか
俺の実力じゃよく分からんかった

331 :
>>330
否定後読み(戻り読み)
(jscriptには無いので使用環境によっては使えないことに注意)

332 :
>>331
おー、サンクス
>>327の課題はこれでいけた、Janeで一応動いてるっぽい(>>327のは書式間違ってたねすまん)
(?<!が)ちな(?!み)
誤爆が見つかったら"|"使って地道に誤爆減らしてる

333 :
変数の後に数字つける方法がわからん
(\d\d) (\d\d) → \1\212345 →NG
(\d\d) (\d\d) → \1\2\x312345 →NG
先読み使えるの?
手元のエディタは変数の後数字が来るとバグる

334 :
>>333
どういう環境なのか知らんので一般的な回答だけど
正規表現内の後方参照では、\1,\2の替わりに\k<1>,\k<2>(または\k'1', \k'2')と書ける
$1,$2の場合は、${1},${2}と書ける(jscriptの場合は、$01,$02とする)

【例】
文字列: 112
正規表現:^(\d)\k<1>2 (またはキャプチャの括弧を使って ^(\d)(\1)2 としても良い)
部分文字列の参照:${1}2 (jscriptなら$012) で、12となる

335 :
>>334
ありがと
使ってたのはmfindだからPerl 5互換
コマンドプロンプトで高度な正規表現使えるソフトだったので

336 :
すいません質問です
言語…sakuraeditor

↓次のような文章を小さい順に並べたい、この部分 (パイプABC001)
|ABC001
|の次は必ずアルファベットになります

・文章 (例)
カメラ|ABC001
レンズ|BCD005
バッテリー|CDV003|不良あり


337 :
正規表現と関係ない話・質問は他スレへどうぞ。

338 :
「|」←この縦棒の入力の仕方教えて
スマホでATOCでの入力方法が知りたいです
記号全部見たけど該当するのが見つけられませんでした

339 :
http://tamae.2ch.sc/test/read.cgi/php/1348048723/338
ブクマしてコピペ
or辞書登録

340 :
>>338
バーティカルバー 入力
https://www.google.co.jp/search?q=%E3%83%90%E3%83%BC%E3%83%86%E3%82%A3%E3%82%AB%E3%83%AB%E3%83%90%E3%83%BC+%E5%85%A5%E5%8A%9B&ie=UTF-8

341 :
教えて下さい!!
テキストデータにある電話番号部分を消したいのですがどのようにしたらいいでしょうか?

氏名 3桁の市内局番 ハイフン 4桁の番号 住所

というデータです。
テキストエディタを使って正規表現でハイフン付きの電話番号部分だけを消したいのです。
よろしくお願いします。

342 :
JavaScriptで作った。
空白は半角空白のことです。
「空白数字3つ空白-空白数字4つ空白」の部分を、1つの半角空白に置換する。
もし違っているなら、データの入出力を、正確に書いてくれ

入力
東京太郎 123 - 4567 東京都なんたら
大阪次郎 123 - 4567 大阪府なんたら

出力
東京太郎 東京都なんたら
大阪次郎 大阪府なんたら

var str = "東京太郎 123 - 4567 東京都なんたら" + "\n" +
"大阪次郎 123 - 4567 大阪府なんたら"

var str2 = str.replace(/ \d{3} \- \d{4} /g, " ");
console.log(str2);

343 :
>>341
(\d{3})-(\d{4})

344 :
バルタン星人

345 :
>>344
なんなんな?

346 :
Google Apps Scriptなんですが
ここの時系列データ(日付〜出来高まで)抽出したいのだけど、上手くいきません。
ttps://jp.investing.com/indices/vn-historical-data

var myRe = /<td.*>(\d{1,2}月\d{1,2}日\d{4}年)<\/td><td.*>([\d,]+(\.\d+)?)<\/td><td>([\d,]+(\.\d+)?)<\/td>
<td>([\d,]+(\.\d+)?)<\/td><td>([\d,]+(\.\d+)?)<\/td><td.*>([\d,]+(\.\d+)?)k<\/td>/g;

347 :
公開された、APIを使えば?
公開されていないのなら、jQuery などで、抜き出せばいい

id が、results_box で、その子孫の<td> なら「#results_box td」

var tmp_id = "results_box";
var selector = "#" + tmp_id + " td";
console.log('selector = ' + selector);

var jqObj = $(data).find( selector );
console.log('jqObj.length = ' + jqObj.length, '\n', jqObj);

if ( 0 === jqObj.length ) { データなし }

348 :
>>346
もう少しシンプルに書けないのか?

349 :
プログラム板の正規表現スレの方が、人が多いよ

350 :
!で始まる行を除く半角英数字を正規表現で記述することはできますか?
否定先読みを使ってもうまくいきませんでした

351 :
>>350
どんなパターンを書いたの?

352 :
>>351
素人考えで下記のようにしてみました
(?!^!.*\n)[!-~&#165;]

素養がないので質問をすること自体が恐縮ではありますが
ご教授いただければと思います

353 :
プログラム板の正規表現スレの方が、人が多い。
そっちへ書き込んだら?

半角英数字は、文字クラスで、簡単に表現できそう

354 :
問題は具体例がないから何を対象として或いは対象としたくないのかが分からんということだ

355 :
そもそも半角英数字には、! は含まれていないから、

^[A-Za-z0-9]+$

356 :
ABCとDEF という単語を両方含むレスをNGにする事はできますか?

ABCだけが含まれるレスとDEFだけが含まれるレスはNGにせず、両方含まれる場合だけNGにしたいです

357 :
できます

358 :
教えてくださいw
ググっても見つかりませんでした

359 :
自己解決した

360 :
yo

361 :
誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。

グーグル検索⇒『半藤のブブイウイウレレ』

A4BHVWGZK8

362 :
http://egg.2ch.sc/test/read.cgi/applism/1509549074/800
このような、本文に何もないレスを非表示NGにしたいのですが、^$でも^\n$でも対処が出来ず。
…と言うより、一体どう投稿したのかさっぱり分からず…試しに任意の1文字を含む本文をNGにしても効果なく、ならば任意の1文字を含まない本文を…も効果なく、まるで正規表現のNGWordを一切受け付けない感じなのですが、なにか方法がありますでしょうか?

363 :
>>362
あと、正規表現を使わずに文字列で

をNGWordにしたところ、本文無しレスが1つと、多数の普通のレスが巻き添えで消えてしまいました。
消えずに残った、連投された本文無しレスのしぶとさと言ったらもう…。

364 :
環境は?

365 :
とりあえずJaneStyleで動いたやつ

^(?i:<br(?: ?/)?>|\s|&#(?:x[0-9a-fA-F]+|[0-9]+);| )*$

本文中に数値参照入ってるから面倒なんだな

366 :
>>364,365
レスありがとうございます!
ああっ、すみません!
使ってるのはChMateです。

367 :
>>365
せっかく教えて頂いたのに肝心な環境をお伝えしてなくて申し訳ありません。
スマホのAndroid 8でChMateと言う専ブラを使ってます。
お教え頂いた正規表現自体は入力エラーになりませんでしたが、効果はありませんでした。

368 :
2chmateだと環境無いし分からんな
改行の表現あたり直せば動くんじゃなかろか

369 :
>>368
レスありがとうございます。
本文中に数値参照入ってる…と言う事は、私からは本文が見えないだけで、本当は何らかの本文があるんですね。
もう少しググってみて手掛かりを探してみます。
ありがとうございました。

370 :
>>369
>>365で改行コードが<br>じゃなく\nでも、800は消えると思うんだが
これで消えないとすると、(?i:)が解釈できないのかもしれない
2chのdat上は、改行は<br>しかあり得ないのでもっと簡略に書いてもいいし
文字参照の16進表記は無効なのでこれも必要ない
^(<br>|\s|&#[0-9]+;| )*$
これでダメなら、<br>のかわりに[\n\r]を書けばいい

ところで、くだんのレスには、半角空白が文字参照で書かれているわけ
&#32; (実際には&は半角の&)

2chで空白文字は、
 &#32; &#160; &#8194; &#8195; &#8201; &#8203; &#12288;
したらばで空白文字は
  &nbsp; &ensp; &emsp; &thinsp; &#160; &#8194; &#8195; &#8201; &#8203;

なおしたらばで中身の無いレスは上記の表現では何故かNGできない(^$ならOK)
http://jbbs.shitaraba.net/bbs/read.cgi/internet/8173/1426610041/659

371 :
>>370
レスありがとうございます。
そこまで親身になって頂いてとても嬉しく思います。
ですが、全てのパターンで試してみたものの、無情にも効果がありませんでした…。
ChMateはレスを長押しでNGに登録出来る機能もあるのですが、普通なら
http://imgur.com/4eGdel7.png
こんな風にNGWordを選択出来るのですが、あのレスでそれをすると
http://imgur.com/pJn3HBT.png
なんと選択肢からNGWordが消えてしまうという…。
これはもう、ChMateがNGWord出来ないレスですよと判断しているようなモノだと思って、諦めることにします。
とても参考になる解説まで教えて下さってありがとうございました。

372 :
ツイッターのハッシュタグ抽出したいんだけど、おすすめの正規表現教えてください

373 :
>>372
>>1
> ・質問も大歓迎。使用言語を書くのを忘れずに。

374 :
正規表現の用語の英和対訳表みたいなのあったら教えてください
詳説正規表現(中古で買った第2版)読んでるんだけど、前後読み、先読み、後読みとういう用語で絵混乱しました。
というのは、例えば
日本語訳の、「前後読みの一つである先読みは」は原文では、
One type of lookaround, called lookahead
になってます。
look aheadの意味はweblioによると
(1) 前方を見る.
(2) 未来のことを考える; 将来に備える.
となってるので、
時系列の後先を意味する「先読み」ではなく、方向を示す「前方読み」だと分かってれば理解しやすいのに、と思ったからです。

375 :
>>373
php です

376 :
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

377 :
言語はjavascriptですがjavaの処理を借りて使ってるみたいです
やりたいことは
「V2Cの書き込み時、URLに?があったら警告を出したいが、Youtubeサイトだけは除外したい場合」
正規表現でどう書けばいいかわからないので
&&条件にして回避しましたが1つの正規表現で可能ですか?
ソースはこれです
var ph = java.util.regex.Pattern.compile('ttps?([-_.!~*\'()a-zA-Z0-9;:\@&=+\$,%#/]+)\\?');
var ph2 = java.util.regex.Pattern.compile('youtube');//除外サイト

378 :
>>377
var ph = java.util.regex.Pattern.compile('(?!.*(youtube))ttps?([-_.!~*\'()a-zA-Z0-9;:\@&=+\$,%#/]+)\\?');
これにしたら出来ました

379 :
1つにまとめるのが必ずしもいいとは限りませんよ
処理スピードは確実に遅いですそれ..
正規表現の否定は難しいので正規表現に不慣れならなるべく避けたほうが無難です

380 :
Perl 5互換の正規表現エンジンで、

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
This is a pen.

これを

"ABCDEFGHIJKLMNOPQRSTUVWXYZ"|abcdefghijklmnopqrstuvwxyz
0123456789
This is a pen.

としたいのですがどうすればいいのでしょうか?
gオプションを外せば「[\r\n]」で初回の改行のみにマッチできるんですが
それができないツールなので指定できません
他の方法で初回の改行だけにマッチさせる方法を教えてもらえないでしょうか
よろしくおねがいします

381 :
シングルラインモードで改行文字除外して先頭からマッチすればいいんじゃねーの?

/^([^\x0A\x0D]+)(?:\x0D\x0A|[\x0A\x0D])/"$1"|/g
https://regex101.com/r/TW7wpm/2

マルチラインモードしかダメってんなら

/^((?:(?<!\x0A|\x0D).)+)(?:\x0D\x0A|[\x0A\x0D])/"$1"|/gm
https://regex101.com/r/TW7wpm/1

382 :
あ, 開始デリミタあったな, マルチラインモードでもこれでいいや

/\A([^\x0A\x0D]+)(?:\x0D\x0A|[\x0A\x0D])/"$1"|/gm
https://regex101.com/r/TW7wpm/3

383 :
>>382
完璧に動作しました。
助かりました。

https://regex101.com/で試していたのですが
結果までリアルタイムに見れることも気づいてませんでした
本当にありがとうございました。

384 :
教えてください
日付を処理するにあたり
2018-07-09 もしくは 7-9-18
のどちらがきても$1月$2日を7月9日にしたいと思っています。年は不要。

(?:20[12][0-9]-0?)?(1?[0-9])-0?([123]?[0-9])(?:-[12][0-9])?
で一応うごいてるのですが、もっとスマートにできますでしょうか?

385 :
PHPで一番最後のカギカッコとその先を消したい時

$text = 'あいうえお「かきくけこ」「さしすせそ」たちつてと';
   ↓
$text = 'あいうえお「かきくけこ」';

$text = preg_replace("/「[^「」]*」.*/","",$text);
では元の文字列のまま返されます。
しかし、さしすせそ の部分を sasisuseso にすると成功します。何が問題なのでしょうか?

386 :
>>384
そもそも処理自体が正規表現に向いてないと思うんですけど

>>385
それ全然ダメでしょ
*はgreedyだから最初にマッチした括弧以降全部食う
あとPHPならuオプション使うべき

/(「[^「」]*」)(?:(?!(?1)).)*$/
https://regex101.com/r/AKpqav/2

何か正規表現でももっと賢い方法ありそうだけど思い浮かばなかった

387 :
>>386
ありがとうございます。半分くらいしか分かりませんがうまくいきました。

$text = preg_replace("/(「[^「」]*」)(?:(?!(?1)).)*$/su","",$text);

388 :
age

389 :
txtファイルで20文字目で改行したいのです。
20文字目で改行コードを挿入すればいいのかなと思ったのですが、
書き方がわかりません。
よろしければどなたか教えてください。

390 :
/\A(.{20})/$1\n/

391 :
>>390
レスありがとうございます。
説明が足りず申し訳ありません。
例えばなんですが、秀丸エディタのような正規表現の置換に対応したテキストエディタで
<置換前>
あいうえおかきくけこさしすせそ
たちつてとなにぬねのはひふへほ
<置換後>
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
はひふへほ
これは5文字目で改行させた場合の例ですが、これを20文字目で改行させたいということなんです。
で、<置換前><置換後>に正規表現でどのように書けばいいのかということなんですが、いかがでしょう?

392 :
>>391
秀丸 タグ付き正規表現
で検索するといいかも?

393 :
>>392
検索してみたら、そのものずばりがありました。
【秀丸エディタ】正規表現を用いて指定文字数で改行させる方法
https://nodoame.net/archives/4675
どうもありがとうございました。

394 :
書き込めないテスト
http://o.8ch.net/1a4y8.png

395 :
test
行数?

396 :
IllustratorCS以降のスクリプトで縦中横を正規表現でしたいのですが
ググっても見つからないので自作しようと

縦書きテキストの縦中横を自動処理
var matchStr = /[0-9]/ ;  //これをベースに↓
htt p://d-p.2-d.jp/ai-js/pages/01_scripts/text/index.html#14_text_vertical_folder
これだと半角1文字か2文字の数値のみで 小数点が間にあると1文字ずつバラバラに適用されてしまいます

半角数字2〜3文字(以上) かつ 途中に小数点ピリオド有無 を縦中横に
半角欧数字が1文字の場合は 全角に
したいです JavaScript
http://o.8ch.net/1a4yd.png

397 :
数字とドットを判別する正規表現
^[1-9][0-9]+$|^[1-9][0-9]+\.?[0-9]+$
htt p://lma ker.blo g17.f c 2.com/blo g-en try-169.html
これだとうまく走りません
先頭数字が0でもかまわないので
^[0-9][0-9]+$|^[0-9][0-9]+\.?[0-9]+$   //や
^[0-9]+$|^[0-9]+\.?[0-9]+$       //を試してみましたが 駄目でした

NGワードtest回避

398 :
頭にマイナス文字が来るのを忘れていました
http://o.8ch.net/1a4za.png

399 :
URLは見せたいのか伏せたいのかどっちやねん

400 :
URLは2chのNGワードにひっかかってるみたいで
すみません

401 :
直接の答えじゃなくてすまんけど。

正規表現で^は行の先頭を意味するけど、それは意図とあってる?
縦書きに紛れる数字って行の先頭とは限らないんじゃないかな。

402 :
一度に書けなくてすまん。
$も、あれは行末を意味するからそれも意図とあってるかな?

縦書きする日本語
数字部分
縦書きする日本語

という原稿なら俺のツッコミは余計なのでごめん。
逆に言うとそういう原稿じゃないと機能しないと思うよ。

403 :
>>401
^が行の一番目から数字かどうかを見ていたから
$が行末を見ていたから
下のは走らなかったんですね

文中の数字なので、そのご指摘であってます
初歩的な内容ですみません
とりあえず頭と尻を取ってみてみます
こんな過疎なのにありがとうございます

404 :
/[0-9]+$|^[1-9][0-9]+\.?[0-9]+/ ;  //では駄目でした……
練習テスト

328nobodyさん2018/09/30(日) 10:50:04.80ID:???

この文字列を
↓こうしたい ヒット希望する箇所=【 】

【328】nobodyさん【2018】/【09】/【30】(日) 【10】:【50】:【04.80】ID:???

405 :
386 や 38.6 みたいな数字だけのも試しましたが
386 には無効で 38.6 は 38 と ピリオド と 6 とに分けられて効きました

正規表現よりスクリプトの中身の処理なのかもしれません
う〜ん

406 :
いま手元に試せる環境ないけど、でもまだ環境を疑う前の状態、正規表現が完成してない状態だと思う。余裕あったら336の最後、試してみるね。

407 :
>>404
例文の328nobodyの328は必ず3桁?

408 :
[+-]?[0-9]+(?:\.[0-9]+)?

https://regex101.com/r/aPT3sE/1

409 :
>>407
>>396>>398 の画像のように
必ず3桁とは限りませんですね
4桁以上のこともありますので

410 :
[+-]?[0-9]+(?:\.[0-9]+)?

https://regex101.com/r/aPT3sE/1

411 :
>>410
プラスマイマスまで処理していただいて
ありがとうございます

システムのプログラムが本職ではないので
こういうのが苦手でした
正規表現処理としては合っているのですが
スクリプトは半角数字1〜2文字のみを処理するだけで
3桁数字もプラスもマイナスも小数点も駄目でした
本当にお手間をおかけしました
今回はあきらめてみます う〜ん……

412 :
自分に対して「ガイジ」って言ってくる奴をNGみたいなの出来る?

413 :
無理だと思う。どのレス番が自分なのか予め分かってる必要があるけどそれが難しいんじゃないかな。

414 :
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。

415 :
perlをphp化しようとしています。
perlの$`や$'のようなマッチの前後の文字列を取り出すことはできますか?
また、tr/A-Z/A-Z/のような変換は、変換則をいちいち配列で指定しないとできないのでしょうか。

416 :
>>415
後者は正規表現じゃなくてmb_convert_kanaじゃあかんの?

417 :
スレ内のランダムで3回以上繰り返される同一の文章をNGできますか?

418 :
細かく説明するとスクリプトコピペ荒らしのコピペ内容が一定期間で変わってしまうというので困っています

V2Cの正規表現で似たもの見つけましたが、janeでは使えませんでした。
(?:^|\n)(.{5,}\n(.*\n){0,2})\1{3}

419 :
Janeはdatは取得したそのままで何も加工しないので
改行は\nではなくて<br>となる
また、各行の先頭と末尾に半角空白が付加されている
実際にレスがどうなっているのかはdatを覗いてみるのが一番

420 :
JavaScriptで
<table class="aaa" border="1" xxx="yyy" ...(略)>
これを
.replace( /class="(S+)"/g, '.$1' )
で、
<table .aaa border="1" ....>
の形にすることができました。

今度は
<table class="aaa bbb ccc (略)" border="1" xxx="yyy" ...(略)>
これを、border以降を巻き込むことなく
<table .aaa .bbb .ccc (略) border="1" ...>
の形にしたいのですが、どうすればよいでしょうか…?
「=」を含まないようにすればいいんだとは思いますが、なんだかごちゃごちゃするばかりでうまくいきませんでした。

421 :
その後色々試して見た結果
replace( /class=["\s]((.+)+)"/g, '.$1' )
とすることで
<table .aaa bbb ccc (略) border="1" ...>
の形にすることができました。

しかし、.aaa .bbb .ccc のように繰り返して「.」を付加する方法がわかりません。
おとなしく2回に分けて置換するほかないのでしょうか?

replace( /class="(.+\s)?(.+)(\s.+)?"/g, '.$2' )
…これだと1回しか置換できませんね…

422 :
すいません質問させてください
専ブラアプリのchmateで連続投稿、連レスをNGに出来ませんか?
連続でなくても、同一IDで沢山書き込んでいるのをNGにしたいのです
毎日NGIDとして登録すれば済む話しなんですが‥
正規表現で一定数以上の書き込みをNGにしたいのです
よろしくお願いします

423 :
「あいう
えお」
『かきくけ
こ』

のような場合に改行を詰めたいのですが

^[」』](\r?\n)

を置換して消そうとしてもうまくいきませんでした
どうすれば詰めることができるでしょうか

(使用環境はAutoHotkeyです)

424 :
>>423
違ってたらごめんだけど、^の後に何がきても的な指定が足りてないんちゃう?

行頭、ほにゃらら、」または』、改行

とするのがいいんじゃないかなぁと。

425 :
>>424
あ、^は行頭ではなく、[]内の否定でした…

」や』で終わってたらOK(置換しない)
」や』以外で終わってたら、改行コードを削除して詰める
という感じです

^(.+)[^」』]\r?\n

なんか違いますね…
試しにこれでやってみると

「あいう」
『えお』
「かきく
けこ」



「あいう」『えお』
「かきく
けこ」

になるので逆っぽい…
どうも[^]による否定ができていない気がします
一応、AutoHotKeyの正規表現でも[^]による否定はできるはずなんですけど

426 :
http://r2.upup.be/wV2qsULdHm

427 :
教えて下さい。
!と!に該当させたいけれど、!?と!?の場合は除外したい場合、
どのような正規表現になるでしょうか。

428 :
>>427
(?![!!][??])[!!]

429 :
質問スレ2つもあるけどどっちかにまとめたほうがいいな

Regular Expression(正規表現) Part14
https://mevius.2ch.sc/test/read.cgi/tech/1489511075/

430 :
質問はこちらへ

Regular Expression(正規表現) Part14
https://mevius.2ch.sc/test/read.cgi/tech/1489511075/

431 :
1に質問大歓迎とあるが

432 :
すいません、>>428ではうまく出来なくて
試行錯誤の結果
!(?!?|\?)
!(?!?|\?)
で出来ました。
可能ならば1行にしたいのですが、どうすれば良いでしょうか。

433 :
アドレスを編集しているんですけど
:80だけ消してたとえば:8001,:6080とか
80が含まれる数字は残したいんですけどどうやればいいんでしょうか
さくらエディターつかってます

434 :
PHPで改行以外の制御文字を空文字に置換したいと思い次のように書きました。

preg_replace( '/(?!\n)[\p{Cc}]/u' , '' , $ver );

この場合、否定先読みで\nを指定しているのですが、\rも指定した方が良いのでしょうか。
詳しい方、アドバイスをください。
よろしくお願いします。

435 :
よろしくお願いします。

正規表現の使えるエディターで、行末にある※印を、行頭に移動する方法を探しております。
詳しい方、アドバイスをお願いいたします。

436 :
そういえば\Rは\rや\nにマッチするって見かけたけど、間にある垂直タブや書式送りにもマッチするよな

437 :
鬼太郎実況スレに現れる軍オタ荒しはどうNGすればいいんでしょうか

荒らす個々の文が違うのでやってもやっても消えません

438 :
GreasemonkeyのスクリプトでニコニコのコメントをNGにするため
正規表現がうまく適用できなくて

任意の文字列が4字以上連続
.{4,}

スクリプトのほうの問題ならあきらめます

439 :2019/07/30
https://i.imgur.com/PgEWKSB.jpg

金出すから改造してよvol.3
【Perl】掲示板を使ろう!
PHP質問・雑談スレ6【初心者お断り(ROM歓迎)】
【質問】ASP.NETスレ Part7【雑談】
天才WEBプログラマの方々に一生のお願い…
DBの絡んだWEB制作の相場
(;・∀・)また、騙されたの?
【php】fuelphpについて語ろうぜ
●転送量削減について●
アプリケーションサーバって必要?
--------------------
【バーチャルYouTuber】🐬電脳少女シロ🐬#132【シロ組】
Cycle*2017 サイクルロードレース総合実況53
東海実況
Fs 多田野 数人 from BL→MLB→IL→NPB→BC / evolution 103
■■速報@ゲーハー板 ver.51620■■
斎藤環スレ
はげだけど無しスレ立てた
QMA7のキャラ再編について語るスレ
【都市消滅】消滅予想都市、人口減加速…8割の713自治体★3
レッドバロンの評判 【 問 題 点 】part58
14263r.)幸福の科学って新木優子だけじゃないんだな
聴診器 2本目
【橋本環奈】 かぐや様は告らせたい〜天才たちの恋愛頭脳戦〜 ☆5
リゼロのレムです…なんだかムラムラして…
【狐・羊・狼】 SlySoft.com Part1 【赤・橙・黒】
C62・C59を語るスレ
哥欲祟-ウタホノタタリ-
火葬場の求人出してるぞ いそげ! [331464139]
札幌実況2
NTT-ME PART7
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼