[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/20 09:57 / Filesize : 293 KB / Number-of Response : 1056
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Regular Expression(正規表現) Part15



1 名前:デフォルトの名無しさん [2019/09/16(月) 22:25:11.87 ID:enU8we0d.net]
Regular Expressionスレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

前スレ
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/


次スレは>>980宜しく
天ぷら等>>2以降

1006 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 00:56:20.45 ID:fcbr/1wh.net]
昔reで書いたコードを書き直さずに使えるのが最大のメリットだと思うけど

1007 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 01:10:10.73 ID:IgDyba7Y.net]
「後方互換を破壊するに足る理由」が無いので、そのまま残されている

1008 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 07:31:05.25 ID:XtnzC8HY.net]
>>947
だってエスケープしてるなんて
おともだちに知られたら恥ずかしいし

1009 名前:デフォルトの名無しさん [2021/10/18(月) 08:28:55.87 ID:CI2UP6iO.net]
エスケープは恥だが役に立つ

1010 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 08:46:32.68 ID:PPwA/bGd.net]
python2からpython3への後方互換の捨てっぷりを思えば、
さっさとreを捨ててregexが標準になってもおかしくないはずだが、そうなっていないのはなにか事情があるのかな?

1011 名前:デフォルトの名無しさん [2021/10/18(月) 08:55:29.74 ID:K+CpcSgx.net]
reで不便したことないけどregexにしかない有用機能ってなにがあるの?

1012 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 14:36:27.24 ID:TKHV76Qy.net]
日本語などの処理とか

1013 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 11:49:02.44 ID:q6QnFAh4.net]
pythonistaでregexインストールしようとしたら、c言語使ってるんで無理だよ的メッセージが出ました。
そうなると、re使うしかないわけで、そういう意味では存在価値ありますね。

1014 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 13:36:44.32 ID:WfNe98xT.net]
reがregexを取り込めばいいってだけなのでは?
少なくともreが対応してる範囲でregexも同様に使えるということだし
あまり大きいと組み込み用途とかでは難しいのかもしれないけど

urllibはそんな感じで後発を取り込んでるよね



1015 名前:デフォルトの名無しさん mailto:sage [2021/10/19(火) 14:38:55.63 ID:4nkSMT7f.net]
取込みして欲しい

1016 名前:デフォルトの名無しさん [2021/10/23(土) 08:19:13.63 ID:eRVGYV8c.net]
AHKで、文字列中の単語の間にスラッシュがある場合はその単語の後ろ(区切り文字やピリオドの前)に閉じ括弧を付けたいのだけど、例えばRegExReplaceを使って実現する方法を誰か教えていただけないでしょうか。
こんな、感じにしたいと思ってます。
変換前: aaa bbb/ccc ddd
変換後: aaa bbb/ccc) ddd

1017 名前:デフォルトの名無しさん mailto:sage [2021/10/23(土) 11:35:17.68 ID:0zN24xO8.net]
(\w+\/\w+)
$1)
文字列に日本語が入るなら\wを適切なやつに変えて

1018 名前:デフォルトの名無しさん [2021/10/23(土) 15:13:21.57 ID:eRVGYV8c.net]
>>977
グループ化って、こうやって使うんでうね。すごく勉強になりましたし、非常に助かりました。ありがとうございます。

1019 名前:デフォルトの名無しさん [2021/10/27(水) 20:23:03.98 ID:TntzyF5u.net]
●Regular Expressionの使用環境
javascript
●検索か置換か?
検索
●説明
abcとdefというキーワードが最大1回順不同で出現するのに一致したい
●対象データ
abc def→一致
def abc→一致
abc→一致
def→一致
→空白のみでも一致
→何もなくても一致
abc def g→異なる単語が入っていると不一致

簡単な書き方はありますか?

1020 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 20:44:43.49 ID:dNMmh9m9.net]
>>979
var str = 'なんか';
str.replace(/abc|def/g, '');
if (str.trim() === '') console.log('一致');
else console.log('不一致');

1021 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 21:13:34.52 ID:dNMmh9m9.net]
str = str.replace(/abc|def/g, '');
だった

1022 名前:デフォルトの名無しさん [2021/10/27(水) 21:45:36.38 ID:TntzyF5u.net]
ありがとうございます。
ちなみに正規表現だけで上記は可能ですか?

1023 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 22:06:08.57 ID:BM1dPtJu.net]
javascript使うんだろ
何で他の式を使ったらダメなの?
まあorに空白を入れとけばtrimは不要かもね
あと最大1回とは2回出るとダメってことなのか?
abcabc→不一致?

1024 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 22:38:09.67 ID:FvdEROp3.net]
>>979
素直に
^ *(?:(?:abc)? *(?:def)?|(?:def)? *(?:abc)?) *$
じゃだめなの?



1025 名前:デフォルトの名無しさん [2021/10/27(水) 22:44:32.89 ID:TntzyF5u.net]
abcabcはabcが2回でるので不一致です。
javascriptの場合教えてもらったコードで問題ないですね。
正規表現だけで表現できると便利だなーとおもったまでです。

>>984 ありだと思います。

1026 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 23:05:28.48 ID:h1zi3AMh.net]
967はabcabcに一致するんじゃないかなあ

^(?: |(abc|def)(?!.*\1))*$

1027 名前:デフォルトの名無しさん mailto:sage [2021/10/28(木) 09:10:36.00 ID:Fr3tDLQH.net]
>>986
こんな書き方できたんだ。知らんかった。

1028 名前:デフォルトの名無しさん mailto:sage [2021/10/29(金) 00:41:45.01 ID:p2ooNE+J.net]
こんなスレがあったんですね
今後お世話になろうと思います^^

1029 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 19:56:09.69 ID:y9dUwbDd.net]
Pythonの正規表現を変数などに入れておき、他の正規表現の一部として再利用する方法ってあるのでしょうか。

第一の正規表現を
hoge =[abcd]
としてhogeに格納しておいて、

別の正規表現で
(【hoge】|[efg])

のように、【】の部分で変数を引用するイメージです。

1030 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 20:12:23.79 ID:FdnrrKGs.net]
>>989
普通に文字列で持っておいて結合するだけじゃダメなの?
hoge = r'[abcd]'
...
r'(' + hoge + r'|[efg])'

1031 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 20:13:14.90 ID:y9dUwbDd.net]
>>979
試しに考えてみました。
問題あればご指摘ください。

abc defのときに、間の空白がどの程度許容されるのかがわかりませんが、とりあえず1文字の空白があってもなくても良い\s?、ということで考えます。


場合分けすると、

abcが冒頭に来るもの(defはあってもなくても可)
defが冒頭にくるもの(abcはあってもなくても可)
どちらもなく、空白はあってもなくても可
の3種類にわけられますから、

^abc\s?(def)?
^def\s?(abc)?
^\s?

であり、このどれかがあてはまればいいので、
(^abc\s?(def)?| ^def\s?(abc)?|^\s?)
となります。

^は3つに共通しているので、カッコの外に括り出してもいいですね。すると
^ (abc\s?(def)?| def\s?(abc)?|\s?)
となります。

1032 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 20:19:09.28 ID:y9dUwbDd.net]
3つを合成する時に間に変なスペースが入ってしまっていて、マッチを妨げていました。

^(abc\s?(def)?|def\s?(abc)?|\s?)
ですね。

1033 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 20:27:08.27 ID:y9dUwbDd.net]
>>990
それは盲点でした!
正規表現オブジェクトの再利用ということばかり考えていましたが、複数の正規表現に同じ文字列を代入すれば同一の効果が得られますね。

ありがとうございます。

1034 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 22:28:52.36 ID:lg5lGqAB.net]
>>991もですが色々アイデアありがとうございます。

空白の条件は書き忘れですね。

abcとdefの間は空白一つ以上、先頭、末尾は空白あっても無くてもOKでした。



1035 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 23:11:57.73 ID:y9dUwbDd.net]
>>994
そうであれば

^(abc\s+(def)?|def\s+(abc)?|\s?)\s?$
で良いと思います。

間の空白を1以上とし、
忘れていた行末$を補い、
パターンの後に空白があっても大丈夫なようにしました。

1036 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 23:35:05.65 ID:4m+F11LP.net]
>>995
それ ' ABC DEF' みたいに先頭に空白があるケースにマッチしなくね?

1037 名前:デフォルトの名無しさん mailto:sage [2021/10/30(土) 23:56:32.32 ID:OkX3vbx3.net]
>>995
それ 'ABC' みたいに末尾に空白がないケースにマッチしなくね?

1038 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 00:22:50.48 ID:Os0N65jy.net]
>>997
ご指摘ありがとうございます。
大変勉強になりました

^\\s?(abc(\s+def)?|def(\s+abc)?|\s?)\s?$

のように直しました。
abc のあとにdefが来るとき、
defのあとにabcが来るとき、
これらの場合のみ空白が必須なので、
空白と後に続くものを、まとめて括弧に入れるべきでした。

1039 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 00:32:18.65 ID:Os0N65jy.net]
^\s?(abc(\s+def)?|def(\s+abc)?|\s?)\s?$

冒頭のドルマークが1つ多かったです。
すいません。


あとは、冒頭に\s?を置くのであれば、選択肢の3つ目は不要ですね。
仮に空白文字しかない場合、冒頭の\s?が行末までマッチしてしまいますから、選択肢3つ目で空白がマッチすることはない。
というわけで、3つ目の選択肢を消した別解を考えました。

^\s?(abc(\s+def)?|def(\s+abc)?)?\s?$

1040 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 00:49:08.05 ID:Os0N65jy.net]
何度もすいません。
行頭と行末は、*を使うつもりが、?を使ってたから変なコメントになってました。

^\s*(abc(\s+def)?|def(\s+abc)?)?\s*$

これで決定校です!

1041 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 09:32:14.31 ID:u//4ywbB.net]
「正規表現一覧表がパクられた」――DeNAのRPAサービスで個人ブログからの無断転載が発覚 取り下げに
https://www.itmedia.co.jp/news/articles/2111/02/news174.html

1042 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 10:19:24.89 ID:3o+9eeb8.net]
それ見たけど大昔から結構どこにでもある様な表だよね
自意識過剰じゃね?

1043 名前:デフォルトの名無しさん [2021/11/03(水) 11:54:53.38 ID:K+2zXBgv.net]
https://murashun.jp/article/programming/regular-expression.html

1044 名前:デフォルトの名無しさん [2021/11/03(水) 13:01:45.68 ID:6fv+OhcH.net]
客観的に観てもコピられた可能性は高いと思うが
裁判で勝てるかどうかは微妙



1045 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 13:24:24.94 ID:U7i9huA/.net]
そんなことより改変もまともにできないのはヤバい

正規表現の例 マッチする例
Coo+el    Coopel

https://pbs.twimg.com/media/FC7n-5zaUAETKej.jpg

1046 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 14:52:06.73 ID:2qQw+lMw.net]
パクられ元にパクられだ疑惑(はてブ情報)
 web.archive.org/web/20210302113534/https://troutlurefishing.jp/regex.htm

パクられ元
 web.archive.org/web/20210118220247/https://murashun.jp/article/programming/regular-expression.html

パクリ元
 web.archive.org/web/20211030075247/https://coopel.ai/help-center/191

1047 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 14:56:33.55 ID:V2aH3YMI.net]
態と元・先の使い方がおかしい
パクられ先では?

1048 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 16:19:18.89 ID:epFspok0.net]
そもそもgooooooogleにしておかないでgo...gleにしてる時点で
元パクリサイト(今回の騒動の主)のパクリ確定だな

1049 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 16:22:38.72 ID:epFspok0.net]
ん? 上の2つどっちが先なんだ?

1050 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 16:31:21.33 ID:epFspok0.net]
アーカイブされた時間は真ん中が先だな
先後がよくわからんので、>>1008の結論については取り消しておく

正規表現を使わない場合、同じ文字の繰り返しって、...以外ではどう表現する?
gogle, google, gooogle ... という例ならある程度わかるんだが

1051 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 16:55:49.57 ID:X6BWa2vR.net]
>>1010
アーカイヴではそうなる
はてブ論調では後述のように解されてるけど、根拠不明
https://b.hatena.ne.jp/entry/s/www.itmedia.co.jp/news/articles/2111/02/news174.html

> オリジナルも別のサイト https://troutlurefishing.jp/regex.htm の改変に見えるけど、仮の図表として入れてたのをそのまま出しちゃったんだろうなぁ。。
https://b.hatena.ne.jp/entry/4710603849468972162/comment/roshi

1052 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 19:48:21.44 ID:ebAE+z9+.net]
◆関連サイト
正規表現メモ
www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
www.din.or.jp/~ohzaki/regex.htm

詳説 正規表現
www.oreilly.co.jp/books/9784873113593/
正規表現クックブック
www.oreilly.co.jp/books/9784873114507/

正規表現プログラミングFAQ
capslockabcjp.kitunebi.com/faq.html
.NET Framework の正規表現 | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions
正規表現 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
鬼車
https://github.com/kkos/oniguruma
鬼雲
https://github.com/k-takata/Onigmo
bregonig.dll(鬼雲の正規表現をサクラエディタ等で使用するためのライブラリ)
k-takata.o.oo7.jp/mysoft/bregonig.html
Boost.Regex 1.45.0 (日本語訳)
alpha.sourceforge.jp/devel/boost.regex_ja_1_45_0.pdf

秀丸: 複数行にまたがる検索について
homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS

サクラエディタ: 改行
d.hatena.ne.jp/myokoym/20101219/1292779058
※ サクラエディタでは複数行に渡る検索・置換は出来ません。

1053 名前:デフォルトの名無しさん [2021/11/03(水) 20:02:22.42 ID:ebAE+z9+.net]
次スレ
Regular Expression(正規表現) Part16
https://mevius.5ch.net/test/read.cgi/tech/1635936601/

1054 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 778日 21時間 37分 11秒



1055 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<293KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef