Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/
次スレは>>980宜しく
天ぷら等>>2以降
探検
Regular Expression(正規表現) Part15
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/09/16(月) 22:25:11.87ID:enU8we0d449デフォルトの名無しさん
2020/09/28(月) 18:54:06.13ID:R3xf3P8N >>448
出来ました!素晴らしいです!マジ感謝です!ありがとうございました。
出来ました!素晴らしいです!マジ感謝です!ありがとうございました。
450デフォルトの名無しさん
2020/10/21(水) 20:12:01.53ID:nvjx5i9I 一文字だけで改行するのを
NGにするには
どうしたらいい?
NGにするには
どうしたらいい?
451デフォルトの名無しさん
2020/10/21(水) 20:18:35.54ID:+qN3TxkM >>450
テンプレを読んで出直しましょう
テンプレを読んで出直しましょう
452デフォルトの名無しさん
2020/11/06(金) 11:29:16.13ID:xeNq05z2 oniguruma6.9.6 Windows10のVS2019で64bit版だとtestc.exeが無言で終了する、32bitだと正常。
Winodws7でVS2015U3だと64bitでも32bitでも正常に動作する。
これ、以前からWindows64bitが鬼門だなあ
Winodws7でVS2015U3だと64bitでも32bitでも正常に動作する。
これ、以前からWindows64bitが鬼門だなあ
453デフォルトの名無しさん
2020/11/10(火) 19:15:09.53ID:aUuUQimA ●PowerShell
●置換
●テキストファイル内の「WrtCookie=」で始まる行の値を「WrtCookie=」に置換する
●「WrtCookie=」で始まる行
現在のコマンド
$input = '^(WrtCookie=).+$'
$replacement = '$1'
$file_contents = $(Get-Content $filepath) -replace $input, $replacement
結果
テキストファイル内の全行が出鱈目な文字列に置換されます
たとえば「$1[$1W$1I$1N$1D$1O$1W$1]$1」など
よろしくお願いします
●置換
●テキストファイル内の「WrtCookie=」で始まる行の値を「WrtCookie=」に置換する
●「WrtCookie=」で始まる行
現在のコマンド
$input = '^(WrtCookie=).+$'
$replacement = '$1'
$file_contents = $(Get-Content $filepath) -replace $input, $replacement
結果
テキストファイル内の全行が出鱈目な文字列に置換されます
たとえば「$1[$1W$1I$1N$1D$1O$1W$1]$1」など
よろしくお願いします
454デフォルトの名無しさん
2020/11/10(火) 21:00:25.97ID:UHXHz0W1455デフォルトの名無しさん
2020/11/11(水) 00:09:52.12ID:tbqNNnPd >>454
書き込む前にたくさんググりましたが、ダメでした
書き込む前にたくさんググりましたが、ダメでした
456 【大凶】
2020/11/11(水) 01:27:50.51ID:zRgJ3mqg >>453
変数名 input を regexp とかに変えれば上手くいくはず
input は「自動変数」として設定済
https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_automatic_variables
変数名 input を regexp とかに変えれば上手くいくはず
input は「自動変数」として設定済
https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_automatic_variables
457デフォルトの名無しさん
2020/11/11(水) 02:35:05.41ID:wa6LgG/F >>453
俺のところじゃ、そのままでも正常だけどなあ(win7だからか? PS ver.5.1)
その3行だけじゃあ表示も出力もされないので
$file_contents
を最後に追加した
その入力ってJane系のiniファイル(SJIS)だよね?
ファイルに出力もして確認してみた
(デフォではUnicode16になっちゃうのでout-fileでencoding指定)
俺のところじゃ、そのままでも正常だけどなあ(win7だからか? PS ver.5.1)
その3行だけじゃあ表示も出力もされないので
$file_contents
を最後に追加した
その入力ってJane系のiniファイル(SJIS)だよね?
ファイルに出力もして確認してみた
(デフォではUnicode16になっちゃうのでout-fileでencoding指定)
458デフォルトの名無しさん
2020/11/11(水) 05:21:46.13ID:yU9bVv8n Windows 10、PSVersion 5.1 では、
input という名前が、ダメ!
input という名前が、ダメ!
459デフォルトの名無しさん
2020/11/11(水) 19:56:31.19ID:tbqNNnPd460デフォルトの名無しさん
2020/11/11(水) 22:49:04.53ID:yU9bVv8n VSCode を使っていれば、白色になる・注意されるから、おかしいとすぐに分かる
まあ、echo などのエイリアスも、白くなるけど
まあ、echo などのエイリアスも、白くなるけど
461デフォルトの名無しさん
2020/12/12(土) 00:58:58.79ID:c3naq2mv 質問
abc
を
a,b,c
に一発で変換する正規表現を教えてください!
abc
を
a,b,c
に一発で変換する正規表現を教えてください!
462デフォルトの名無しさん
2020/12/12(土) 07:54:00.68ID:hjoAkuIf (?!^|$) → ,
463デフォルトの名無しさん
2020/12/12(土) 09:13:39.74ID:weC8GZqi 461じゃないけど、知らなかった。
行頭じゃない&行末じゃない
だけ言えば字間全てに入れてくれるんだ。
行頭じゃない&行末じゃない
だけ言えば字間全てに入れてくれるんだ。
464デフォルトの名無しさん
2020/12/12(土) 09:45:07.71ID:DbQnMcwq s//,/g
だと、,a,b,c,になる
だと、,a,b,c,になる
465デフォルトの名無しさん
2020/12/12(土) 10:10:46.24ID:c3naq2mv >>462
ありがとうございます!
ありがとうございます!
466デフォルトの名無しさん
2020/12/15(火) 08:04:57.95ID:RAwP5vtJ ●Regular Expressionの使用環境
Perl5
●検索か置換か?
検索
●説明
文字列中のX,YY,ZZZのどれかが最初にあるまでのX,YY,ZZZを含む抽出
●対象データ
ABXCDXEFYYGH
ABYCZZZDXEFYYGH
ABCDXXGHZZ
●希望する結果
ABX
ABYCZZZ
ABCDX
お願いします
Perl5
●検索か置換か?
検索
●説明
文字列中のX,YY,ZZZのどれかが最初にあるまでのX,YY,ZZZを含む抽出
●対象データ
ABXCDXEFYYGH
ABYCZZZDXEFYYGH
ABCDXXGHZZ
●希望する結果
ABX
ABYCZZZ
ABCDX
お願いします
467デフォルトの名無しさん
2020/12/15(火) 08:15:41.96ID:M4wr588R >>466
($out) = ($in =~ /(.*?(?:X|YY|ZZZ))/)
($out) = ($in =~ /(.*?(?:X|YY|ZZZ))/)
468デフォルトの名無しさん
2020/12/15(火) 08:17:29.03ID:cXhQAKUm469デフォルトの名無しさん
2020/12/15(火) 08:49:36.46ID:RAwP5vtJ470デフォルトの名無しさん
2020/12/19(土) 09:53:24.06ID:YTpQ8Jg0 ublacklistでPinterestをブロックする正規表現教えて下さい
471デフォルトの名無しさん
2021/01/11(月) 15:03:41.29ID:A5mldiyH 行末以外の改行を任意の一文字(今回はアットマーク)に置換したいのですが可能でしょうか?
改行コードは、crもlfもcrlfも混じってるものとしてお願いしたいです。
改行コードは、crもlfもcrlfも混じってるものとしてお願いしたいです。
472デフォルトの名無しさん
2021/01/11(月) 15:10:21.63ID:WVZOdukT473デフォルトの名無しさん
2021/01/11(月) 15:31:25.19ID:zqhSwaSS 初学者なのでうまく伝わるか心配ですが、 固定長で末尾に改行が入っているレコードファイルを扱っています
その中で、末尾だけでなくレコード中にも改行コードが含まれるようなデータがあり、それを置換したいといった具合です。
UNIX上での話なので、Perlやsedで置換できればと思います。
よろしくお願いいたします。
その中で、末尾だけでなくレコード中にも改行コードが含まれるようなデータがあり、それを置換したいといった具合です。
UNIX上での話なので、Perlやsedで置換できればと思います。
よろしくお願いいたします。
474デフォルトの名無しさん
2021/01/11(月) 15:41:19.51ID:8i1ZTkbL sedはデフォルト行ベースなので改行コードを全部置換すればいい
475デフォルトの名無しさん
2021/01/11(月) 15:43:13.55ID:92N2rfT4 /[\r\n]++(?!$)/@/g
こんな感じじゃね?分からんけど
こんな感じじゃね?分からんけど
476デフォルトの名無しさん
2021/01/11(月) 16:15:14.39ID:rLqIFFRR s/\r?\n/@/gm;
どうよ?
どうよ?
477デフォルトの名無しさん
2021/01/11(月) 16:20:44.13ID:A2M5zvGV 固定長ごとに出てくる改行以外の改行ってことじゃね
改行含めて80文字固定長なら80文字目や160文字目以外の37文字目や53文字目に出てくる改行
改行含めて80文字固定長なら80文字目や160文字目以外の37文字目や53文字目に出てくる改行
478デフォルトの名無しさん
2021/01/11(月) 17:26:33.52ID:8i1ZTkbL あーすまんそういうことか
それだと固定長単位に読み取って置換と出力のループかな
while read -N10 line || [ "$line" ]; do
echo "$line" | tr -d '¥r¥n'
echo
done < input.txt
それだと固定長単位に読み取って置換と出力のループかな
while read -N10 line || [ "$line" ]; do
echo "$line" | tr -d '¥r¥n'
echo
done < input.txt
479デフォルトの名無しさん
2021/01/11(月) 17:59:11.32ID:Op1S7Ai1480デフォルトの名無しさん
2021/01/11(月) 18:31:58.04ID:RwOnRvzI 改行コードは、cr・lf・crlf の3種類あるのか?
固定長の末尾の改行の後には、何が入っている?
ヌル文字か?
例えば、100バイトの固定長で、内容が80バイトなら、
残りの20バイトには、何が入っている?
それとも、内容の80バイトの部分だけが、渡ってくるのか?
固定長の末尾の改行の後には、何が入っている?
ヌル文字か?
例えば、100バイトの固定長で、内容が80バイトなら、
残りの20バイトには、何が入っている?
それとも、内容の80バイトの部分だけが、渡ってくるのか?
481デフォルトの名無しさん
2021/01/11(月) 18:43:53.19ID:5PaUweSP CR なんとかReturn
LF LineFeed
CRLF なんとかReturnLineFeed
LF LineFeed
CRLF なんとかReturnLineFeed
482デフォルトの名無しさん
2021/01/11(月) 20:39:57.39ID:F0XanEVZ echo -en "abcde
a\ncde
a\rcde
a\r\nde
abcdef
a\ncdef
a\nc" |
sed -re ':b;y/\r\n/@@/;/.{5}/!{N;bb};'
a\ncde
a\rcde
a\r\nde
abcdef
a\ncdef
a\nc" |
sed -re ':b;y/\r\n/@@/;/.{5}/!{N;bb};'
483デフォルトの名無しさん
2021/01/11(月) 21:38:18.11ID:6WXFekQD484デフォルトの名無しさん
2021/01/12(火) 17:48:10.93ID:fqpU06Zc >>481 carriage
485デフォルトの名無しさん
2021/01/14(木) 20:15:05.94ID:uu7IOQ/X >>479
解決しましたか?
解決しましたか?
486デフォルトの名無しさん
2021/01/14(木) 20:19:20.00ID:eDcISF88 うざw
487デフォルトの名無しさん
2021/01/15(金) 04:04:23.16ID:VxNLJyBo 先日質問させていただいた471です。
色々と試した結果、
perl -pe ‘s/¥r/@/g $INFILE | perl -pe ‘s/¥n/@/g > $TMPFILE
cat $TMPFILE | perl -e ‘while(read(STDIN, $tmp , 100)){print $tmp, “¥n”}’ > $OUTFILE
と言った具合に、改行を消してから固定長に区切って再度改行付与という形でうまくいきました!
皆さんに教えてもらった方法とは少し異なりますが、ここで質問しなければ検索ワードすら導き出せませんでした。
皆様には感謝してもしきれません。
ありがとうございました。
色々と試した結果、
perl -pe ‘s/¥r/@/g $INFILE | perl -pe ‘s/¥n/@/g > $TMPFILE
cat $TMPFILE | perl -e ‘while(read(STDIN, $tmp , 100)){print $tmp, “¥n”}’ > $OUTFILE
と言った具合に、改行を消してから固定長に区切って再度改行付与という形でうまくいきました!
皆さんに教えてもらった方法とは少し異なりますが、ここで質問しなければ検索ワードすら導き出せませんでした。
皆様には感謝してもしきれません。
ありがとうございました。
488デフォルトの名無しさん
2021/02/02(火) 23:52:09.94ID:LuWw9dWt []で囲まれた単語は/\[.+\]+/gで見つかるけど
文中に複数[]で囲まれた範囲があるとうまくいかない
'['以降で一番近い']'にマッチさせたいんだがどうやるか教えて
文中に複数[]で囲まれた範囲があるとうまくいかない
'['以降で一番近い']'にマッチさせたいんだがどうやるか教えて
489デフォルトの名無しさん
2021/02/03(水) 00:24:53.98ID:SY/XoUH2 /\[[^\]]+\]+/g
490デフォルトの名無しさん
2021/02/03(水) 01:04:29.59ID:UENZ/29T >>489
ありがとう!
ありがとう!
491デフォルトの名無しさん
2021/02/03(水) 18:02:08.71ID:CJ1qfEuB 英数字7桁[0-9a-zA-Z]の文字列から(改行を経て)先程とは異なる英数字7桁の文字列まで最短一致させる正規表現を書きたいのですがわかりません…
一つ目の7桁の英数字は変数fistに入ってます
new Reg(first +"(.*\n)*?"+ここから先がわかりません
どなたかよろしくお願いしますm(_ _)m
一つ目の7桁の英数字は変数fistに入ってます
new Reg(first +"(.*\n)*?"+ここから先がわかりません
どなたかよろしくお願いしますm(_ _)m
492デフォルトの名無しさん
2021/02/03(水) 18:33:27.05ID:sadlF3mb 最短一致ということは行当たりが[0-9a-zA-Z]{7}ではなく別の文字列も含んでいそうな
つまり「0123abc\ndef4567」だけではなく「あいう0123abc\ndef4567かきく」もあるとか
見本出した方がいいのではないかな
つまり「0123abc\ndef4567」だけではなく「あいう0123abc\ndef4567かきく」もあるとか
見本出した方がいいのではないかな
493デフォルトの名無しさん
2021/02/03(水) 18:41:43.46ID:q3Uucr84 とりあえずこんな感じであとは調整して
https://regex101.com/r/aLWgGd/1
https://regex101.com/r/aLWgGd/1
494デフォルトの名無しさん
2021/02/03(水) 19:08:15.83ID:CJ1qfEuB >>492
すいません、簡単にするために設定をちょっと変えさせてください。
[0-9A-Z]
大雑把で大丈夫なんですが
あいうえお01ABC23あいうえお01abc23あいうえお01abc23 ←ここの01ABC23から
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01DEF23あいうえお01abc23 ←ここの01DEF23まで切り抜きたい
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01HIJ23あいうえお01abc23
first = "01ABC23" が入ってるので、正規表現の最後を01DEF23にしたいのですが
[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。
すいません、簡単にするために設定をちょっと変えさせてください。
[0-9A-Z]
大雑把で大丈夫なんですが
あいうえお01ABC23あいうえお01abc23あいうえお01abc23 ←ここの01ABC23から
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01DEF23あいうえお01abc23 ←ここの01DEF23まで切り抜きたい
あいうえお01abc23あいうえお01ABC23あいうえお01abc23
あいうえお01abc23あいうえお01HIJ23あいうえお01abc23
first = "01ABC23" が入ってるので、正規表現の最後を01DEF23にしたいのですが
[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。
495デフォルトの名無しさん
2021/02/03(水) 19:12:17.69ID:CJ1qfEuB496デフォルトの名無しさん
2021/02/03(水) 19:16:51.84ID:CJ1qfEuB 日本語がおかしくなってました
01ABC23〜01DEF23と切り抜きたいのですが、
first = "01ABC23"と入っているので、firstという変数を使いつつ[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。
01ABC23〜01DEF23と切り抜きたいのですが、
first = "01ABC23"と入っているので、firstという変数を使いつつ[0-9A-Z]{7}から"01ABC23"だけを除外する方法がわからず困ってます。
497デフォルトの名無しさん
2021/02/03(水) 19:28:51.74ID:oLpXy7xv >>496
"(?!" + first + ")[0-9A-Z]{7}"
"(?!" + first + ")[0-9A-Z]{7}"
498デフォルトの名無しさん
2021/02/03(水) 19:41:14.94ID:CJ1qfEuB >>497
ありがとうございますm(_ _)m
↓だと最短一致しないのですが、真ん中がおかしいのでしょうか?
let reg = new RegExp(first+"(.*\n)*?"+"(?!"+first+")[0-9A-Z]{7}");
改行を含めた最短一致は([\s\S]*?)か(.*\n)*?でできていたのですが、何故か最短にならず困ってます
ありがとうございますm(_ _)m
↓だと最短一致しないのですが、真ん中がおかしいのでしょうか?
let reg = new RegExp(first+"(.*\n)*?"+"(?!"+first+")[0-9A-Z]{7}");
改行を含めた最短一致は([\s\S]*?)か(.*\n)*?でできていたのですが、何故か最短にならず困ってます
499デフォルトの名無しさん
2021/02/03(水) 19:49:30.28ID:CJ1qfEuB500デフォルトの名無しさん
2021/02/03(水) 20:21:28.10ID:CJ1qfEuB501デフォルトの名無しさん
2021/02/04(木) 12:49:19.54ID:ynIf2rIG [正規表現の[表現力[は]ネストに]勝てない]
※Perlの拡張とかは除く
※Perlの拡張とかは除く
502デフォルトの名無しさん
2021/02/04(木) 15:31:37.02ID:7s9fZWEo 繰り返しの中で使う時、時間のかかる正規表現を避けたいが、結局試すのが一番
if x=="abc" と if x=~/^abc$/ の比較など(簡単すぎる例)
重要なシステム内で複雑な表現を使う場合テストも重要だが、
どうしてもおかしくなったら調べる式になってしまう
if x=="abc" と if x=~/^abc$/ の比較など(簡単すぎる例)
重要なシステム内で複雑な表現を使う場合テストも重要だが、
どうしてもおかしくなったら調べる式になってしまう
503デフォルトの名無しさん
2021/02/06(土) 14:47:08.00ID:s4jA/y9i お願いします
●Regular Expressionの使用環境
VBScript
●検索か置換か?
置換
●説明
[hoge]をブラケットごと消したい
[[hoge]]の場合は残したい
●対象データ
abc[hoge]def
ghi[[hoge]]jkl
●希望する結果
abcdef
ghi[[hoge]]jkl
^^^^^^^
否定戻り読み否定先読みで試してみたのですが、ブラケット2回の場合にマッチせずブラケット1回の場合にのみマッチさせる方法が分かりませんでした
よろしくお願いします
●Regular Expressionの使用環境
VBScript
●検索か置換か?
置換
●説明
[hoge]をブラケットごと消したい
[[hoge]]の場合は残したい
●対象データ
abc[hoge]def
ghi[[hoge]]jkl
●希望する結果
abcdef
ghi[[hoge]]jkl
^^^^^^^
否定戻り読み否定先読みで試してみたのですが、ブラケット2回の場合にマッチせずブラケット1回の場合にのみマッチさせる方法が分かりませんでした
よろしくお願いします
504デフォルトの名無しさん
2021/02/06(土) 15:07:35.62ID:bKRJeVsu (?<!\[)\[hoge\](?!\])
505デフォルトの名無しさん
2021/02/06(土) 16:56:52.18ID:EC31O1b+ >>503
VBSには否定戻り読みは無いので、工夫するしかない
すぐには思いつかないけどもっといい方法もあるかもしれないのでググってみては?
愚直には、一つの方法として以下の場合に分ける
1) [hoge]で始まる場合
2) 文字列があって [ 以外で終わって [hoge] がある場合
3) 文字列があって [ で終わってる場合、[hoge] があって ] が続かないこと
pattern : "^(?:\[hoge]|(.*?\[)\[hoge\](?!\])|(.*?[^\[])\[hoge\])(.*)$"
replace : "$1$2$3"
abcdef → abcdef
[hoge]def → def
[[abc]]def → [[hoge]]def
abc[hoge]def → abcdef
abc[[hoge]]def → abc[[hoge]]def
abc[[hoge]def → abc[def
abc[hoge]]def → abc]def
下2つの場合が無ければもう少し簡易にできる
では[hoge]が2つ以上ある場合はどうするか?
すぐ思いつく方法としては、変換をループさせて、文字列に変化がなければ終わりとか
VBSには否定戻り読みは無いので、工夫するしかない
すぐには思いつかないけどもっといい方法もあるかもしれないのでググってみては?
愚直には、一つの方法として以下の場合に分ける
1) [hoge]で始まる場合
2) 文字列があって [ 以外で終わって [hoge] がある場合
3) 文字列があって [ で終わってる場合、[hoge] があって ] が続かないこと
pattern : "^(?:\[hoge]|(.*?\[)\[hoge\](?!\])|(.*?[^\[])\[hoge\])(.*)$"
replace : "$1$2$3"
abcdef → abcdef
[hoge]def → def
[[abc]]def → [[hoge]]def
abc[hoge]def → abcdef
abc[[hoge]]def → abc[[hoge]]def
abc[[hoge]def → abc[def
abc[hoge]]def → abc]def
下2つの場合が無ければもう少し簡易にできる
では[hoge]が2つ以上ある場合はどうするか?
すぐ思いつく方法としては、変換をループさせて、文字列に変化がなければ終わりとか
506デフォルトの名無しさん
2021/02/06(土) 17:17:15.94ID:do+3t/u8 (¥[hoge¥])(?!¥])|[^¥[](¥[hoge¥])
https://regex101.com/r/xhea5T/1
https://regex101.com/r/xhea5T/1
507デフォルトの名無しさん
2021/02/06(土) 17:31:09.15ID:nqcg0owg (\[\[hoge\]\])|\[hoge\] → $1
https://regex101.com/r/xhea5T/2
https://regex101.com/r/xhea5T/2
508デフォルトの名無しさん
2021/02/06(土) 17:40:46.95ID:bKRJeVsu ([^\[])\[hoge\]([^\]])
$1$2
(^|[^\[])\[hoge\]([^\]]|$)
$1$2
$1$2
(^|[^\[])\[hoge\]([^\]]|$)
$1$2
510デフォルトの名無しさん
2021/02/06(土) 18:09:33.55ID:EC31O1b+511デフォルトの名無しさん
2021/02/06(土) 18:21:12.27ID:z9sN/DQY 発想の転換だな
目鱗
目鱗
512デフォルトの名無しさん
2021/02/06(土) 18:57:27.44ID:do+3t/u8 >>507
へぇー、これは面白い
へぇー、これは面白い
513デフォルトの名無しさん
2021/02/06(土) 19:33:52.91ID:nvvrKfMw >>507
これは賢い
これは賢い
514デフォルトの名無しさん
2021/02/16(火) 18:09:22.76ID:YYQsROlp ※間はタブです
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
(ABC|JKLHI7)を反転させたい
※(ABC|JKLHI7)→空に置き換え
ABC DEF 123
FGH JKL 956
GBN MJK HI7
↓こうなります
DEF 123
FGH 956
GBN MJK
(ABC|JKLHI7)を反転させて
ABC
JKL
HI7
というデータに置き換えたいです。
よろしくお願いいたします。
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
(ABC|JKLHI7)を反転させたい
※(ABC|JKLHI7)→空に置き換え
ABC DEF 123
FGH JKL 956
GBN MJK HI7
↓こうなります
DEF 123
FGH 956
GBN MJK
(ABC|JKLHI7)を反転させて
ABC
JKL
HI7
というデータに置き換えたいです。
よろしくお願いいたします。
515デフォルトの名無しさん
2021/02/16(火) 18:10:03.36ID:YYQsROlp516デフォルトの名無しさん
2021/02/16(火) 18:30:01.16ID:9J2HaZUU 区切りは全角空白なのかい?
まあこんなのでどう?
(ABC|JKL|HI7)|[0-9A-Z]*→$1
まあこんなのでどう?
(ABC|JKL|HI7)|[0-9A-Z]*→$1
517デフォルトの名無しさん
2021/02/16(火) 19:29:55.89ID:YYQsROlp518デフォルトの名無しさん
2021/02/16(火) 20:11:15.08ID:2Q6k9WLx519デフォルトの名無しさん
2021/02/17(水) 00:48:24.95ID:5uVmT0ro XABCXのようなものまでABCにしたいなら、末尾を+?に変えた方がいいかも
520デフォルトの名無しさん
2021/02/18(木) 23:51:52.71ID:sRdwF113 面白いなあ
逆に正規言語じゃない言語ってどんなのか気になる
逆に正規言語じゃない言語ってどんなのか気になる
521デフォルトの名無しさん
2021/02/19(金) 07:25:19.97ID:1ojHRCGQ 言語?
522デフォルトの名無しさん
2021/02/19(金) 18:55:29.37ID:Clj7wgUu 文脈自由言語とか文脈依存言語とか?
523デフォルトの名無しさん
2021/02/19(金) 20:03:11.77ID:gWMDVcMR 文脈も先読み後読みrematch駆使すれば取れそうに思うけど、本来どこまでやっていいんだっけ 理論とか分からん
524デフォルトの名無しさん
2021/02/19(金) 20:05:33.21ID:Wnqd+KEH 正規表現で記述可能な文字列の集合を指して正規言語という
が、その意味で使われたのかは定かでない
が、その意味で使われたのかは定かでない
525デフォルトの名無しさん
2021/02/19(金) 20:15:12.89ID:gWMDVcMR 取り敢えずその言語がn要素の有限集合ならstr1|str2|...|strn で表現できるのでは
文字列の長さを制限して、有限の文字集合なら
すげーつまらないけど
文字列の長さを制限して、有限の文字集合なら
すげーつまらないけど
526デフォルトの名無しさん
2021/02/19(金) 20:33:20.22ID:gWMDVcMR 無作為な文字列から、特定の言語に属する部分列を検出しろ、って問題にどれだけ簡潔に答えられるかってことだよな
どう計ったものか
どう計ったものか
527デフォルトの名無しさん
2021/02/20(土) 01:01:18.47ID:yNkkv6Pq AIに正規表現を設計させたらどんなものになるのだろう
528デフォルトの名無しさん
2021/03/03(水) 06:22:13.41ID:7UFtTk12 ●Regular Expressionの使用環境
python 3.x
●検索か置換か?
検索
●説明
ここをアクセスの次に出てくるURL(ttp://xxxx2/)をとってきたい
pattern = re.search("▼ここをアクセス.*(http.*\n)+?",a_text,flags=re.DOTALL)
複数行検索してるが最後のURLをとってきてしまう
●対象データ
URL1です
ttp://xxxx2/
□ 【▼ここをアクセス】
ttp://xxxx2/
URL2です
ttp://xxxx3/
●希望する結果
ttp://xxxx2/
python 3.x
●検索か置換か?
検索
●説明
ここをアクセスの次に出てくるURL(ttp://xxxx2/)をとってきたい
pattern = re.search("▼ここをアクセス.*(http.*\n)+?",a_text,flags=re.DOTALL)
複数行検索してるが最後のURLをとってきてしまう
●対象データ
URL1です
ttp://xxxx2/
□ 【▼ここをアクセス】
ttp://xxxx2/
URL2です
ttp://xxxx3/
●希望する結果
ttp://xxxx2/
529デフォルトの名無しさん
2021/03/03(水) 06:44:56.40ID:lklpa5qm > "▼ここをアクセス.*(http.*\n)+?"
python分からんけど
"▼ここをアクセス.*?(http.*?\n)"
python分からんけど
"▼ここをアクセス.*?(http.*?\n)"
530デフォルトの名無しさん
2021/03/03(水) 07:02:17.82ID:h6piMY+h >>529
レスサンクスですが、最後のttp://xxxx3/を拾ってきてしまいます
レスサンクスですが、最後のttp://xxxx3/を拾ってきてしまいます
531デフォルトの名無しさん
2021/03/03(水) 07:20:09.73ID:h6piMY+h 自己解決
"▼ここをアクセス.+?(http.+?)\n"
でいいみたい
"▼ここをアクセス.+?(http.+?)\n"
でいいみたい
532デフォルトの名無しさん
2021/03/07(日) 14:22:59.84ID:Fo2Np7TJ 正規表現ってパズルとしては面白いけど
https://oraclesqlpuzzle.ninja-web.net/regex/index.html
可読性に問題あるんじゃね?
もっとマシな別の表記方法が必要じゃないか?
https://oraclesqlpuzzle.ninja-web.net/regex/index.html
可読性に問題あるんじゃね?
もっとマシな別の表記方法が必要じゃないか?
533デフォルトの名無しさん
2021/03/07(日) 16:02:01.74ID:UIB+9WXp 自分が解らないものは悪
534デフォルトの名無しさん
2021/03/07(日) 16:17:46.75ID:TNmQ0Vam 理解の過程で可読性に問題があるのではと疑問を抱き、
別の表記法の必要性を考え、
そのあと別の表記を実際に考えるところまでやると、
正規表現考えたケン・トンプソンすげーなってなる
別の表記法の必要性を考え、
そのあと別の表記を実際に考えるところまでやると、
正規表現考えたケン・トンプソンすげーなってなる
535デフォルトの名無しさん
2021/03/07(日) 17:26:15.98ID:FZPehcc/ >>532
> もっとマシな別の表記方法が必要じゃないか?
定期的にそう言うのが話題になるけどなかなかいい記法が無いんだよね
abc+
程度の簡単な奴と
^((?!aaa).)*((?=aaa)a((?!aaa).)*){3,5}((?!aaa).)*$
みたいなパット見よく分からん奴を1つの記法で簡単に見易くするのはなかなか難しい
> もっとマシな別の表記方法が必要じゃないか?
定期的にそう言うのが話題になるけどなかなかいい記法が無いんだよね
abc+
程度の簡単な奴と
^((?!aaa).)*((?=aaa)a((?!aaa).)*){3,5}((?!aaa).)*$
みたいなパット見よく分からん奴を1つの記法で簡単に見易くするのはなかなか難しい
536デフォルトの名無しさん
2021/03/07(日) 17:53:05.78ID:AM/Ef9W/ やるとしたらアスキー文字以外の文字や記号を加えてもうちょっと役割を分散させると、機能を保持しつつ見やすくはなるが、そうすると今度はラテン文字圏の人が「自分が解らないものは悪」でいかに不要かを全力で説き始めると思う。
537デフォルトの名無しさん
2021/03/07(日) 17:56:22.71ID:TNmQ0Vam ASCII外の文字使うと入力コストが高くなるじゃん
538デフォルトの名無しさん
2021/03/07(日) 18:04:15.76ID:4bEjyVwB ?とか^とか二つの意味を持つのは何とかしてほしかったよな
まあ分かるからいいんだけど
まあ分かるからいいんだけど
539デフォルトの名無しさん
2021/03/07(日) 20:25:01.40ID:RWgRWesX 可読性を犠牲にして短く書けるのが正規表現
正規表現と同じことを可読性の高い表現で記述しようとすればなにかと長くなる
ただある一定以上複雑な正規表現は普通のプログラミング言語で書き直したほうが可読性も保守性も高い
正規表現と同じことを可読性の高い表現で記述しようとすればなにかと長くなる
ただある一定以上複雑な正規表現は普通のプログラミング言語で書き直したほうが可読性も保守性も高い
540デフォルトの名無しさん
2021/03/07(日) 21:12:54.42ID:0cOR0yWB 普通のプログラミング言語で正規表現ライブラリ使ってます
541デフォルトの名無しさん
2021/03/07(日) 21:23:44.60ID:FZPehcc/ 例えば.NETみたいに正規表現中に改行入れたりコメント書けるようにするとかして可読性を上げる試みはあるね
https://www.atmarkit.co.jp/fdotnet/dotnettips/582regexcomment/regexcomment.html
https://www.atmarkit.co.jp/fdotnet/dotnettips/582regexcomment/regexcomment.html
542デフォルトの名無しさん
2021/03/07(日) 21:31:45.50ID:Fo2Np7TJ >>539
それしかなさそうだ
それしかなさそうだ
543デフォルトの名無しさん
2021/03/07(日) 21:36:49.39ID:6FoXMbth >>541
改行してコメント書くのは Perl の正規表現でもできたりする
改行してコメント書くのは Perl の正規表現でもできたりする
544デフォルトの名無しさん
2021/03/07(日) 21:55:32.23ID:RWgRWesX545デフォルトの名無しさん
2021/03/07(日) 22:46:53.20ID:Fo2Np7TJ https://oraclesqlpuzzle.ninja-web.net/regex/regex-2-30.html
これは解読無理やろw 課題→正規表現を思いつくことはできるかも知れんが
正規表現→課題の解読は不可能に近い
課題:行ごとで、
文字列CABと
文字列ABCのみの行を検索する。
^((C(?=AB))|((?<=C)A(?=B))|((?<=CA)B)
|(A(?=BC))|((?<=A)B(?=C))|((?<=AB)C))*$
これは解読無理やろw 課題→正規表現を思いつくことはできるかも知れんが
正規表現→課題の解読は不可能に近い
課題:行ごとで、
文字列CABと
文字列ABCのみの行を検索する。
^((C(?=AB))|((?<=C)A(?=B))|((?<=CA)B)
|(A(?=BC))|((?<=A)B(?=C))|((?<=AB)C))*$
546デフォルトの名無しさん
2021/03/07(日) 23:05:17.93ID:6FoXMbth547デフォルトの名無しさん
2021/03/07(日) 23:21:37.42ID:Fo2Np7TJ それで同じ結果になるな regex 101 でやると
548デフォルトの名無しさん
2021/03/07(日) 23:53:47.53ID:4bEjyVwB 正規表現には「必ず」コメントが欲しいな
できれば例も
典型例と境界例も
できれば例も
典型例と境界例も
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 中国国営メディア「沖縄は日本ではない」…★7 [BFU★]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 【悲報】高市早苗周辺「支持層が離れるので今更発言を撤回できない」 [935793931]
- 高市早苗、岸田政権(当時)に「台湾有事は日本の有事か」という質問をしていた [175344491]
- 青椒肉絲、牛肉ではなく豚肉を使うのが本物だった
- 【悲報】中国→日本行きの航空チケット、高市有事の影響で50万人分がキャンセルされる [834922174]
- んなっしょい🍬禁止🈲のお🏡
