Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part15
https://mevius.5ch.net/test/read.cgi/tech/1568640311/
次スレは>>980宜しく
天ぷら等>>2以降
探検
Regular Expression(正規表現) Part16
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2021/11/03(水) 19:50:01.71ID:ebAE+z9+462デフォルトの名無しさん
2022/07/06(水) 12:10:15.16ID:c6fRPAAn CSV の正規表現なんて、数千行ぐらい掛かるだろ。
HTTP の正規表現でも膨大だろ
行区切り文字の改行
列区切り文字のカンマ
クォート文字のダブルクォーテーション。
クォート文字が無くても、意味が変わらなければ省略できる
クォート文字内では、行区切り文字・列区切り文字の効果がなくなり、単なる文字となる。
クォート文字内で、連続した2つのクォート文字を使えば、
クォート文字の効果がなくなり、単なる1つのクォート文字となる
もし、クォート文字の対応関係が崩れたらエラー。
クォート文字の数は、必ず偶数個である
こんな膨大な条件判断を書けるわけない。
条件判断とか構造があるものは、正規表現では無理。
こういうものは、Ruby などのパーサーを使わないと無理
CSVをawk などで処理している香具師とか、CSVの構造を分かっていないから、
こういう特別な意味をもつ文字が混じると、バグル
HTTP の正規表現でも膨大だろ
行区切り文字の改行
列区切り文字のカンマ
クォート文字のダブルクォーテーション。
クォート文字が無くても、意味が変わらなければ省略できる
クォート文字内では、行区切り文字・列区切り文字の効果がなくなり、単なる文字となる。
クォート文字内で、連続した2つのクォート文字を使えば、
クォート文字の効果がなくなり、単なる1つのクォート文字となる
もし、クォート文字の対応関係が崩れたらエラー。
クォート文字の数は、必ず偶数個である
こんな膨大な条件判断を書けるわけない。
条件判断とか構造があるものは、正規表現では無理。
こういうものは、Ruby などのパーサーを使わないと無理
CSVをawk などで処理している香具師とか、CSVの構造を分かっていないから、
こういう特別な意味をもつ文字が混じると、バグル
463デフォルトの名無しさん
2022/07/06(水) 13:40:21.16ID:gR1YTmZs464デフォルトの名無しさん
2022/07/06(水) 15:43:31.34ID:MXaUuSJv KEИTAはでたらめ
465462
2022/07/06(水) 17:15:52.66ID:c6fRPAAn 行区切り文字の改行、列区切り文字のカンマ、
クォート文字のダブルクォーテーション
CSV データ内に、こういう特別な意味をもつ文字が混じると、バグル
これらの文字が無ければ、Ruby などのCSVパーサーを使わずに、
awk などで処理しても、バグらない
クォート文字のダブルクォーテーション
CSV データ内に、こういう特別な意味をもつ文字が混じると、バグル
これらの文字が無ければ、Ruby などのCSVパーサーを使わずに、
awk などで処理しても、バグらない
466デフォルトの名無しさん
2022/07/06(水) 17:19:01.24ID:QeuQIz9d なんか話脱線マウントしまくって会議やコードレビュー下手くそで顰蹙を買いまくってそうな人来てるやん
467デフォルトの名無しさん
2022/07/06(水) 17:55:19.63ID:gR1YTmZs >>465
混ぜなきゃいいのでは
混ぜなきゃいいのでは
468デフォルトの名無しさん
2022/07/06(水) 19:01:53.46ID:kQhbtDqq いつも文体一緒だからバレる
469デフォルトの名無しさん
2022/07/06(水) 19:30:39.95ID:5qGkM3IH >> 298
「店」が無い店もあったからHTMLソースから取り出すようにしたよ
ブラウザでHTMLソースを表示させてnotepad++にソースをコピペしてから置換して
1回目の検索欄
^[^\r\n]*<h4\s+[^>]*class=["']?shopList[_\-\s]*storeName["']?[^>]*>\s*<span[^>]*>\s*</span\s*>\s*([^\s<>\r\n]+(?:\s+[^\s<>\r\n]+)*)\s*
</h4\s*>(?:(?!<dd[^>]*>\s*〒|<h4)(?:[\r\n]|.))*<dd[^>]*>\s*〒\s*[\d\-]+\s+([^\s<>\r\n]+(?:\s+[^\s<>\r\n]+)*)\s*</dd\s*>[^\r\n]*$
1回目の置換欄
うんこ$1,$2
2回目の検索欄
^(?!うんこ)[^\r\n]*$[\r\n]+
1回目の置換欄
( 空欄にして )
2回の置換が終われば店舗一覧が完成しているはず
1回目の検索欄は長すぎるから2行に分割したよ、1行に繋げてから使って
検索欄や置換欄に記入するときは前後に余計なスペースやタブ文字が紛れ込まないように
HTMLの細かい変化にはなるべく対応出来るようにしたけど店舗一覧のページがリニューアルしたら使えなくなるよ
「店」が無い店もあったからHTMLソースから取り出すようにしたよ
ブラウザでHTMLソースを表示させてnotepad++にソースをコピペしてから置換して
1回目の検索欄
^[^\r\n]*<h4\s+[^>]*class=["']?shopList[_\-\s]*storeName["']?[^>]*>\s*<span[^>]*>\s*</span\s*>\s*([^\s<>\r\n]+(?:\s+[^\s<>\r\n]+)*)\s*
</h4\s*>(?:(?!<dd[^>]*>\s*〒|<h4)(?:[\r\n]|.))*<dd[^>]*>\s*〒\s*[\d\-]+\s+([^\s<>\r\n]+(?:\s+[^\s<>\r\n]+)*)\s*</dd\s*>[^\r\n]*$
1回目の置換欄
うんこ$1,$2
2回目の検索欄
^(?!うんこ)[^\r\n]*$[\r\n]+
1回目の置換欄
( 空欄にして )
2回の置換が終われば店舗一覧が完成しているはず
1回目の検索欄は長すぎるから2行に分割したよ、1行に繋げてから使って
検索欄や置換欄に記入するときは前後に余計なスペースやタブ文字が紛れ込まないように
HTMLの細かい変化にはなるべく対応出来るようにしたけど店舗一覧のページがリニューアルしたら使えなくなるよ
470デフォルトの名無しさん
2022/07/06(水) 19:34:28.40ID:5qGkM3IH ミスった
1回目の置換欄
( 空欄にして )
これは2回目だね
1回目の置換欄
( 空欄にして )
これは2回目だね
471デフォルトの名無しさん
2022/07/06(水) 19:39:45.64ID:5qGkM3IH 全国の店舗一覧を取得したいならwgetなどで各店舗一覧ページをローカルに保存してからnotepad++のファイル一括置換でまとめて置換したほうが楽
「wgetの使い方が分かりません」はスレ違いなのでよそで聞いて
「wgetの使い方が分かりません」はスレ違いなのでよそで聞いて
472デフォルトの名無しさん
2022/07/06(水) 23:10:34.54ID:gFUK7vgi ホンの少し複雑化しただけで頭の悪さや性格って浮かび上がるよねw
473デフォルトの名無しさん
2022/07/07(木) 16:29:53.46ID:ls1FMHZL そのまま正規表現1回でやるのと、改行の種類とかあったりなかったりする要素とか明らかに不要な要素を掃除してからやるのとどっちがいいですか
474デフォルトの名無しさん
2022/07/07(木) 16:37:27.46ID:3hUwVJb0 掃除して整形してからやるのがコスパ良いに決まってる
力業いくない
力業いくない
475デフォルトの名無しさん
2022/07/07(木) 17:27:59.03ID:EezL89dt ケースバイケースやろ
476デフォルトの名無しさん
2022/07/07(木) 17:45:22.88ID:QZNfJ5wA 答え合わせ出来るとか、間違いに気付き易いor間違い難いケースは1発
合ってるか分かり難い場合は間違い難い正規化式で段階踏む
合ってるか分かり難い場合は間違い難い正規化式で段階踏む
477デフォルトの名無しさん
2022/07/08(金) 12:52:02.00ID:/znuHP85 パイプ・フィルターみたいに、どんどん変換していく方が分かりやすい。
処理A | 処理B | 処理C
Ruby の正規表現では、3種類の改行を、\R と書ける
/\r\n|\r|\n/
/\R/
処理A | 処理B | 処理C
Ruby の正規表現では、3種類の改行を、\R と書ける
/\r\n|\r|\n/
/\R/
478デフォルトの名無しさん
2022/07/10(日) 17:44:55.47ID:0O2dRiW8 >possesive
ポジティブ
ポジティブ
479デフォルトの名無しさん
2022/07/16(土) 01:09:47.27ID:gUwlqT3Y そして誰もいなくなった
480デフォルトの名無しさん
2022/07/16(土) 09:09:55.88ID:L4T2PUf2 民度の低い異常者が常駐してたらそりゃ関わりたくないもん
481デフォルトの名無しさん
2022/07/16(土) 11:12:47.12ID:WasoqaBj 自己紹介乙
482デフォルトの名無しさん
2022/07/20(水) 06:49:04.62ID:v4tHM0fs ●Regular Expressionの使用環境
秀丸
●検索か置換か?
置換
●説明
同じ文字+間に要らない文字列+同じ文字
を
同じ文字 一つにしたいです
●対象データ
[ぬるぽ & ぬるぽ]
[ガッ-ガッ]
[hoge & hoge]
●希望する結果
ぬるぽ
ガッ
hoge
よろしくお願いいたします。
秀丸
●検索か置換か?
置換
●説明
同じ文字+間に要らない文字列+同じ文字
を
同じ文字 一つにしたいです
●対象データ
[ぬるぽ & ぬるぽ]
[ガッ-ガッ]
[hoge & hoge]
●希望する結果
ぬるぽ
ガッ
hoge
よろしくお願いいたします。
483デフォルトの名無しさん
2022/07/20(水) 07:23:49.75ID:iuCM0uSo 説明にない[は何?
484デフォルトの名無しさん
2022/07/20(水) 08:35:20.99ID:jm1i1IHH485デフォルトの名無しさん
2022/07/20(水) 09:04:35.27ID:Fdf9zFh2 テスト
\[(.+?)(.*?\1)\](?\2)
\[(.+?)(.*?\1)\](?\2)
486デフォルトの名無しさん
2022/07/20(水) 16:27:05.86ID:f63hBcuy (.+).+?\1
$1
$1
487デフォルトの名無しさん
2022/07/20(水) 16:30:30.08ID:OlkAUELc [ wow & wow]
489デフォルトの名無しさん
2022/08/28(日) 01:14:30.52ID:y+9tLdhC 正規表現の先読み・後読み https://zenn.dev/usamik26/articles/regex-lookahead
490デフォルトの名無しさん
2022/08/28(日) 07:40:58.02ID:MbqzPdhg perlでは/.*hoge/より/.*?piyo/の方が圧倒的に速いのか
ステップ数は大して変わらなそうなのに
ステップ数は大して変わらなそうなのに
491デフォルトの名無しさん
2022/08/28(日) 08:17:37.04ID:e6Sjxbuq >>490
perlに限らずそりゃそうだろ
"hoge...めっちゃ長い文字列..."
ってあったら /.*?hoge/ なら最初の hoge でマッチしたと判断できるけど /.*hoge/ だと最後まで見ないと判断できない
最後に hoge ってある可能性があるから
perlに限らずそりゃそうだろ
"hoge...めっちゃ長い文字列..."
ってあったら /.*?hoge/ なら最初の hoge でマッチしたと判断できるけど /.*hoge/ だと最後まで見ないと判断できない
最後に hoge ってある可能性があるから
492デフォルトの名無しさん
2022/08/28(日) 08:52:32.95ID:7Mb5USF7 >>491
hogeじゃなくてpiyo
"hoge...めっちゃ長い文字列...piyo"
ってあったら /.*?piyo/ と /.*hoge/ は同じくらいだと期待するでしょ
489のコメントの比較テストを見てなんでそうなるのかなと
hogeじゃなくてpiyo
"hoge...めっちゃ長い文字列...piyo"
ってあったら /.*?piyo/ と /.*hoge/ は同じくらいだと期待するでしょ
489のコメントの比較テストを見てなんでそうなるのかなと
493デフォルトの名無しさん
2022/08/28(日) 09:11:11.32ID:dcB5AKwO >>492
そりゃそういうケースもあるけどそうでないケースの方が多いだろ
そりゃそういうケースもあるけどそうでないケースの方が多いだろ
494デフォルトの名無しさん
2022/08/28(日) 10:55:00.88ID:V92k17Tf 489の記事・コメントを見たけど
「.*hoge.*」
と
「.*?hoge」
の比較をして後者のほうが圧倒的に早いって記述はあったが
490の言ってる比較はどこにも見当たらないようだけど・・・?
492の
>hogeじゃなくてpiyo
はもっと意味不明だな
「/.*hoge/」
「/.*?piyo/」
の違いで、491は「.*」「.*?」の違いで速さが変わるのが当たり前って話をしてるのに
"hoge...めっちゃ長い文字列...piyo"みたいな極端な例を突然出してこられても
「.*hoge.*」
と
「.*?hoge」
の比較をして後者のほうが圧倒的に早いって記述はあったが
490の言ってる比較はどこにも見当たらないようだけど・・・?
492の
>hogeじゃなくてpiyo
はもっと意味不明だな
「/.*hoge/」
「/.*?piyo/」
の違いで、491は「.*」「.*?」の違いで速さが変わるのが当たり前って話をしてるのに
"hoge...めっちゃ長い文字列...piyo"みたいな極端な例を突然出してこられても
495デフォルトの名無しさん
2022/08/28(日) 12:06:13.62ID:3aiLuiYL マッチする場合はそれほどステップ数は変わらないけど
マッチしない場合のステップ数の差は大きいね
マッチしない場合のステップ数の差は大きいね
496デフォルトの名無しさん
2022/08/28(日) 12:10:20.88ID:iCw3MfJc (?s:^(?=.*(?:トビラ|280|280|[内外]製|純正|公式))(?=.*(?:ガイジ|発狂|長文|必死|キチガイ|キチキチ)))
これって何か間違ってますか?280が消えない時があります
これって何か間違ってますか?280が消えない時があります
497デフォルトの名無しさん
2022/08/28(日) 12:33:21.57ID:4oWDpmI8 [22][88][00]
こういうこと?その消えない時のレス見ないと正確なことは分からんよ
後ろが一致してないのかもだし数値参照かもしれんし
こういうこと?その消えない時のレス見ないと正確なことは分からんよ
後ろが一致してないのかもだし数値参照かもしれんし
498デフォルトの名無しさん
2022/08/28(日) 14:30:01.62ID:HKThARKH なぜ組み合わせたいのかがよくわからんな
後半のパターン部分を素で書けば良いと思うんだけど、あえて暴言を目視したいスレでもあるんだろうか?
後半のパターン部分を素で書けば良いと思うんだけど、あえて暴言を目視したいスレでもあるんだろうか?
499デフォルトの名無しさん
2022/08/28(日) 14:36:53.39ID:q8tm2XHG 単発のNGの他に連鎖NGとかIDごとNGとかあるだろ
わからないなら黙ってろよ
わからないなら黙ってろよ
500デフォルトの名無しさん
2022/08/28(日) 16:16:08.48ID:XxcpkpFs ごめん
501デフォルトの名無しさん
2022/09/04(日) 01:47:12.24ID:0/i0sC9q GNU grep 3.8 (2022-09-02)から-Pオプションのリンク先がPCRE2になったらしい
それ以前は古いPCREだった
-Pオプションが機能しないWindows版grepバイナリには関係のない話だけど
それ以前は古いPCREだった
-Pオプションが機能しないWindows版grepバイナリには関係のない話だけど
502デフォルトの名無しさん
2022/09/04(日) 07:42:45.45ID:pCQ9P7Vy 1
2
あ
10
77
100
150
1000
3桁までの数字のみをする場合
[0-9]{,3}だとダメでした
正規表現チェッカーでいろいろ試しているですが分かりません
200までの数字だとどうしたらいいですか?
2
あ
10
77
100
150
1000
3桁までの数字のみをする場合
[0-9]{,3}だとダメでした
正規表現チェッカーでいろいろ試しているですが分かりません
200までの数字だとどうしたらいいですか?
503デフォルトの名無しさん
2022/09/04(日) 08:41:45.13ID:x2tuNrOY ttps://www.simple-edition.com/prog_memo/number_range_regexp/
[1-9]|[1-9][0-9]|1[0-9]{2}|200
で範囲を作ったものを
ttps://weblabo.oscasierra.net/tools/regex/
ここに代入しても使えませんでした
「正規表現」の意味合いが違うんでしょうか?
[1-9]|[1-9][0-9]|1[0-9]{2}|200
で範囲を作ったものを
ttps://weblabo.oscasierra.net/tools/regex/
ここに代入しても使えませんでした
「正規表現」の意味合いが違うんでしょうか?
504デフォルトの名無しさん
2022/09/04(日) 09:08:03.10ID:MIQciAoV >>503
それだと92000の200にもマッチしてしまうよ
インド数字等を気にしないなら[0-9]は[\d]でもOK
(?<![0-9])(?:200|[1][0-9]{2}|[1-9][0-9]|[0-9])(?![0-9])
それだと92000の200にもマッチしてしまうよ
インド数字等を気にしないなら[0-9]は[\d]でもOK
(?<![0-9])(?:200|[1][0-9]{2}|[1-9][0-9]|[0-9])(?![0-9])
505デフォルトの名無しさん
2022/09/04(日) 09:46:10.78ID:ZQZ632xa506デフォルトの名無しさん
2022/09/04(日) 10:07:01.01ID:qlj2b1lm すまない
●Regular Expressionの使用環境
iPhone,a-shellというアプリ
●検索か置換か?
検索
●説明
フォルダ内にある写真を圧縮するため
●対象データ
1から200などのjpegとかの画像
●希望する結果
検索してそれをまとめて圧縮
●Regular Expressionの使用環境
iPhone,a-shellというアプリ
●検索か置換か?
検索
●説明
フォルダ内にある写真を圧縮するため
●対象データ
1から200などのjpegとかの画像
●希望する結果
検索してそれをまとめて圧縮
507デフォルトの名無しさん
2022/09/04(日) 10:19:49.12ID:NNtN3+VI まあ案件次第だけど
> 200までの数字だとどうしたらいいですか?
とかなら\d+で取得してアプリケーション側で弾くのが後の保守を含めて簡単かと思う
> 200までの数字だとどうしたらいいですか?
とかなら\d+で取得してアプリケーション側で弾くのが後の保守を含めて簡単かと思う
508デフォルトの名無しさん
2022/09/13(火) 19:48:53.80ID:aae9uQ50 スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
PowerShell7.2
●検索か置換か?
置換
●説明
文中(先頭及び文末以外)の0が連続して3つ以上並ぶ部分をハイフン(-)に置換したい
●対象データ
123000444
000123000
1230000000444
●希望する結果
123-444
000123000
123-444
よろしくお願いいたします。
●Regular Expressionの使用環境
PowerShell7.2
●検索か置換か?
置換
●説明
文中(先頭及び文末以外)の0が連続して3つ以上並ぶ部分をハイフン(-)に置換したい
●対象データ
123000444
000123000
1230000000444
●希望する結果
123-444
000123000
123-444
よろしくお願いいたします。
509デフォルトの名無しさん
2022/09/13(火) 20:02:34.86ID:BFM47HY2 (?<!^)000+(?!$)
-
-
510デフォルトの名無しさん
2022/09/13(火) 20:23:28.22ID:el3nukes 00000 → 0-0 ?
511デフォルトの名無しさん
2022/09/13(火) 20:37:38.14ID:G28B9gdh512デフォルトの名無しさん
2022/09/13(火) 21:45:26.67ID:aae9uQ50 508です。
早くもいろいろご回答いただきありがとうございます。
そしてすみません、みなさまのリプを見て自分の考えが足りなかったことに気付きました…
変換は一度だけ、先頭から数えてもっとも近いもののみです。
正しく書き直します、すみません。
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
PowerShell7.2
●検索か置換か?
置換
●説明
文中(先頭及び文末以外)の0が連続して3つ以上並ぶ部分をハイフン(-)に置換したい
(先頭から数えて最初の一致のみ)
●対象データ
123000444
000123000
1230000000444
12000045600006
●希望する結果
123-444
000123000
123-444
12-45600006
よろしくお願いいたします。
早くもいろいろご回答いただきありがとうございます。
そしてすみません、みなさまのリプを見て自分の考えが足りなかったことに気付きました…
変換は一度だけ、先頭から数えてもっとも近いもののみです。
正しく書き直します、すみません。
スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境
PowerShell7.2
●検索か置換か?
置換
●説明
文中(先頭及び文末以外)の0が連続して3つ以上並ぶ部分をハイフン(-)に置換したい
(先頭から数えて最初の一致のみ)
●対象データ
123000444
000123000
1230000000444
12000045600006
●希望する結果
123-444
000123000
123-444
12-45600006
よろしくお願いいたします。
513デフォルトの名無しさん
2022/09/13(火) 22:09:54.11ID:jeF3JQfM514デフォルトの名無しさん
2022/09/13(火) 22:20:12.97ID:GLLSFlxd 「文中(先頭及び文末以外)の0」が連続して3つ以上並ぶ部分
文中(先頭及び文末以外)の「0が連続して3つ以上並ぶ部分」
文中(先頭及び文末以外)の「0が連続して3つ以上並ぶ部分」
515デフォルトの名無しさん
2022/09/13(火) 22:24:49.17ID:clq+OpKM ^([1-9]+)0+(\d+)$ --> $1-$2
でいかがでしょう
でいかがでしょう
516デフォルトの名無しさん
2022/09/13(火) 22:33:07.80ID:clq+OpKM あ、「ゼロ3つ以上」を満たしてなかった
また考えますー
また考えますー
517デフォルトの名無しさん
2022/09/13(火) 22:35:39.26ID:clq+OpKM ^([1-9]+)0{3,}(\d+)$ --> $1-$2
でしょーか
でしょーか
518デフォルトの名無しさん
2022/09/13(火) 22:46:39.11ID:7uE/UK4/ 010001
519デフォルトの名無しさん
2022/09/13(火) 23:08:19.66ID:G28B9gdh520デフォルトの名無しさん
2022/09/13(火) 23:09:06.59ID:G28B9gdh521デフォルトの名無しさん
2022/09/13(火) 23:10:13.89ID:aae9uQ50 みなさんありがとうございます!
できそうな正規表現がありうれしいです。
すみませんが今手元に環境がないため明日動作させて確認します。
できそうな正規表現がありうれしいです。
すみませんが今手元に環境がないため明日動作させて確認します。
522デフォルトの名無しさん
2022/09/13(火) 23:20:09.73ID:aae9uQ50 そして自分でも要件を言葉にできておらず申し訳ありません
みなさんに質問いただいて初めて気付きましたが、
先頭及び末尾が0であった場合、そこから連続する0は除外する ができると一番望ましいです。
00001200034000
↓
000012-34000
となります。
返信遅くなりすみません。
みなさんに質問いただいて初めて気付きましたが、
先頭及び末尾が0であった場合、そこから連続する0は除外する ができると一番望ましいです。
00001200034000
↓
000012-34000
となります。
返信遅くなりすみません。
523デフォルトの名無しさん
2022/09/13(火) 23:44:59.39ID:G28B9gdh (?<!^)(?>0{3,})(?!$)
未test
最初のマッチだけ置換は以下
https://social.technet.microsoft.com/Forums/ja-JP/ad0f7263-3fd1-4545-b554-e796d27ef948/263682102112398125101248312481?forum=powershellja
未test
最初のマッチだけ置換は以下
https://social.technet.microsoft.com/Forums/ja-JP/ad0f7263-3fd1-4545-b554-e796d27ef948/263682102112398125101248312481?forum=powershellja
524デフォルトの名無しさん
2022/09/14(水) 00:51:16.34ID:4SNfctPQ525デフォルトの名無しさん
2022/09/14(水) 05:23:58.73ID:E5sTi1VY ([1-9])0000*([1-9][0-9]*)
$1-$2
$1-$2
526デフォルトの名無しさん
2022/09/14(水) 09:12:22.80ID:Kn3Wl+2J (?<=[1-9])(?>000+)(?!$)(.+)$
-$1
-$1
527デフォルトの名無しさん
2022/09/14(水) 09:38:59.41ID:s0UMl1ds (^[^0].*?)0{3,}([^0].*?$)
$1-$2
$1-$2
528デフォルトの名無しさん
2022/09/14(水) 10:42:18.62ID:6Qq1IObP529デフォルトの名無しさん
2022/09/14(水) 19:22:12.74ID:+0SwTq6N 508です。
沢山の案ありがとうございました、本当に助かりました。
一通り試して正しく動くものは沢山あったのですが、
以下の方式で解決させていただきました。
$reg=[regex]'([1-9])0000*([1-9][0-9]*)'
$reg.Replace($str,'$1-$2',1)
また、上記の案以外もこんな解決方法があるのかととても勉強になりました。
そして自分が要件をまとめられてなかったことにも反省いたしました。
今後はこちらで回答する側になれるよう、再度勉強いたします。
重ね重ね本当にありがとうございました。
沢山の案ありがとうございました、本当に助かりました。
一通り試して正しく動くものは沢山あったのですが、
以下の方式で解決させていただきました。
$reg=[regex]'([1-9])0000*([1-9][0-9]*)'
$reg.Replace($str,'$1-$2',1)
また、上記の案以外もこんな解決方法があるのかととても勉強になりました。
そして自分が要件をまとめられてなかったことにも反省いたしました。
今後はこちらで回答する側になれるよう、再度勉強いたします。
重ね重ね本当にありがとうございました。
530デフォルトの名無しさん
2022/09/14(水) 19:57:00.91ID:b2aEm1i9 回答にある正規表現は置換回数を指定できない置換方法でも大丈夫
置換回数に1を指定する方法でやるなら単に ([1-9])0000*([1-9]) でもいい
置換回数に1を指定する方法でやるなら単に ([1-9])0000*([1-9]) でもいい
531デフォルトの名無しさん
2022/09/14(水) 22:22:31.78ID:+0SwTq6N >530
確かに、教えていただいたこともりもりにしてしまいましたが
わざわざ[1-9]のあとに[0-9]を入れている意味がないですね…。
ご指摘ありがとうございます。
確かに、教えていただいたこともりもりにしてしまいましたが
わざわざ[1-9]のあとに[0-9]を入れている意味がないですね…。
ご指摘ありがとうございます。
532デフォルトの名無しさん
2022/09/18(日) 12:56:41.18ID:QaJ1iFM2 githubで結構探したんですがそれっぽいのが見つからず、お力お貸しください。
●Regular Expressionの使用環境
AutoHotKey1.1系
●検索か置換か?
置換
●説明
2つのクォーテーションマークに囲まれたパスのうち、1つ目(app.exe)を削除したい。
囲まれたパス同士は半角スペースで接続される。
●対象データ
"D:\Dir_Path\_app.exe" "D:\Dir_Path\_script.ahk"
^^^^^^^^^^^^^^^^^^^^^^^
●希望する結果
"D:\Dir_Path\_script.ahk"
●Regular Expressionの使用環境
AutoHotKey1.1系
●検索か置換か?
置換
●説明
2つのクォーテーションマークに囲まれたパスのうち、1つ目(app.exe)を削除したい。
囲まれたパス同士は半角スペースで接続される。
●対象データ
"D:\Dir_Path\_app.exe" "D:\Dir_Path\_script.ahk"
^^^^^^^^^^^^^^^^^^^^^^^
●希望する結果
"D:\Dir_Path\_script.ahk"
533デフォルトの名無しさん
2022/09/18(日) 16:16:05.56ID:wjpqonb4534デフォルトの名無しさん
2022/09/18(日) 19:20:15.15ID:/uA/jgNo >>533
ありがとうございますめちゃくちゃシンプルでした!あとこのregexサービスいいですね
".*"\s だと構文エラー吐きました
置換関数内(””の中)で”がうまく扱えないので頑張ってみます。
ありがとうございますめちゃくちゃシンプルでした!あとこのregexサービスいいですね
".*"\s だと構文エラー吐きました
置換関数内(””の中)で”がうまく扱えないので頑張ってみます。
535デフォルトの名無しさん
2022/09/18(日) 21:26:30.42ID:CbZe8FP4 "を
\"
や
\x22
に置き換えて試してみてわ
\"
や
\x22
に置き換えて試してみてわ
536デフォルトの名無しさん
2022/09/19(月) 16:41:30.36ID:4iw9Mtek537デフォルトの名無しさん
2022/09/20(火) 02:58:09.09ID:94I1wBUa 二重引用符のエスケープは重ねて""だな
"".*""\s
"".*""\s
538デフォルトの名無しさん
2022/10/29(土) 13:09:46.30ID:ec13kmtS ●Regular Expressionの使用環境
PCRE2
●検索か置換か?
検索
●説明
(..[\0@-g]\0){147}などを高速に検索したい
●対象データ
メガ単位のバイナリファイル(リトルエンディアン)
●希望する結果
説明は一例なので前中後にリテラルパターンが入る事もありますが(16KiBを越える事も)、固定長で
一定範囲だが不明な32bit値(0または0x00400000〜0x00670000付近)を含むブロック位置を列挙したいです
現状PCRE2で検索は出来ていますが、Intel Hyperscanだと
util/determinise.h:determinise:162:succ_id 16383 >= state_limit 16383
ng_mcclellan.cpp:buildMcClellan:590:state limit exceeded
rose_build_add.cpp:addOutfix:1779:could not build as either an NFA or a DFA
ng.cpp:addGraph:507:could not compile component 0 with 592 vertices
と言われて説明の例に限っては正規表現のコンパイルすら不可能です
32bit値は4バイト境界に限りませんが、ブロック先頭は4バイト境界なのでそこから高速化したいのですが
「(?>....)*?\K」を接頭しようとするとPCRE2_ANCHOREDはJITで使えませんし、そもそも遅くなるようです
今のところプログラム側でオフセットが4バイト境界のみを拾い、次の検索開始もアライメントしています
コールアウトもお察し…こういったパターンに適した書き方、又はCライブラリが有れば教えて欲しいです
PCRE2
●検索か置換か?
検索
●説明
(..[\0@-g]\0){147}などを高速に検索したい
●対象データ
メガ単位のバイナリファイル(リトルエンディアン)
●希望する結果
説明は一例なので前中後にリテラルパターンが入る事もありますが(16KiBを越える事も)、固定長で
一定範囲だが不明な32bit値(0または0x00400000〜0x00670000付近)を含むブロック位置を列挙したいです
現状PCRE2で検索は出来ていますが、Intel Hyperscanだと
util/determinise.h:determinise:162:succ_id 16383 >= state_limit 16383
ng_mcclellan.cpp:buildMcClellan:590:state limit exceeded
rose_build_add.cpp:addOutfix:1779:could not build as either an NFA or a DFA
ng.cpp:addGraph:507:could not compile component 0 with 592 vertices
と言われて説明の例に限っては正規表現のコンパイルすら不可能です
32bit値は4バイト境界に限りませんが、ブロック先頭は4バイト境界なのでそこから高速化したいのですが
「(?>....)*?\K」を接頭しようとするとPCRE2_ANCHOREDはJITで使えませんし、そもそも遅くなるようです
今のところプログラム側でオフセットが4バイト境界のみを拾い、次の検索開始もアライメントしています
コールアウトもお察し…こういったパターンに適した書き方、又はCライブラリが有れば教えて欲しいです
539デフォルトの名無しさん
2022/10/29(土) 19:31:13.26ID:9Ey1MUJ8540デフォルトの名無しさん
2022/10/29(土) 19:42:35.80ID:ec13kmtS >>539
文字クラス[\0@-g]なので表記を統一するなら[\x00\x40-\x67]になります
文字クラス[\0@-g]なので表記を統一するなら[\x00\x40-\x67]になります
541デフォルトの名無しさん
2022/10/30(日) 10:24:48.15ID:dZd+t5oq スプレッドシートで20221030と入力されている数字を日付の表記?2022/10/30なのか10/30/2022なのかわからないけどDATEDIF関数に使える形に置換する正規表現ってどう書きますでしょうか
542デフォルトの名無しさん
2022/10/30(日) 11:55:42.97ID:oF72FRjI >>541
正規表現では無理。スレチ
DATE関数で日付にかDATEVALUE関数でシリアル値に変換
セルA1の値:20221030
=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))
=DATEDIF(DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2)),"2022/11/01","D")
正規表現では無理。スレチ
DATE関数で日付にかDATEVALUE関数でシリアル値に変換
セルA1の値:20221030
=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))
=DATEDIF(DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2)),"2022/11/01","D")
543デフォルトの名無しさん
2022/10/30(日) 12:28:15.07ID:S1PTRz+V544デフォルトの名無しさん
2022/11/02(水) 14:16:53.69ID:gx4Z74sz すいません。
0と正の整数のみにマッチする正規表現はどう書きますか
----
OK
0
1
22
303
999999
----
NG
-3
z55
0.33
0と正の整数のみにマッチする正規表現はどう書きますか
----
OK
0
1
22
303
999999
----
NG
-3
z55
0.33
545デフォルトの名無しさん
2022/11/02(水) 14:20:50.51ID:4jxQNd6r ^\d+$
546デフォルトの名無しさん
2022/11/02(水) 14:26:53.26ID:gx4Z74sz ありがとうございました!
547デフォルトの名無しさん
2022/11/02(水) 14:39:57.52ID:Hz9+pCnD 00
00000000
012
003102
とかはええんかC言語だと8進数なんだけど
00000000
012
003102
とかはええんかC言語だと8進数なんだけど
548デフォルトの名無しさん
2022/11/02(水) 14:57:45.88ID:mLb2a5cx 最近は8進数を0oと書くのが主流じゃね?
549デフォルトの名無しさん
2022/11/02(水) 15:14:09.32ID:gx4Z74sz いやよくないのですが。。
550デフォルトの名無しさん
2022/11/02(水) 22:52:34.87ID:WMtJS4K4 >>547
なぜC言語?
なぜC言語?
551デフォルトの名無しさん
2022/11/03(木) 13:08:35.66ID:yr3S2O5F ^(?:0|[1-9]\d*+)$
552デフォルトの名無しさん
2022/11/03(木) 23:35:12.45ID:gGr9RQjz A(B(1), C(2)), B(3), C(4), A(D(5))の
A(B(1), C(2))とA(D(5))の両方にマッチする表現できますでしょうか?
A(B(1), C(2))とA(D(5))の両方にマッチする表現できますでしょうか?
553デフォルトの名無しさん
2022/11/04(金) 00:21:55.02ID:Rv2RlvZT A\([BD]\([15]\)(, C\(2\))?\)
554デフォルトの名無しさん
2022/11/04(金) 00:32:30.76ID:u3TD418O >>552
関数名は英数字1文字、ネストされた関数の引数は数字1文字にしてるけどこんな感じでいけるかと
\w\(\w\(\d\)(?:,\s*\w\(\d\))*\)
https://i.imgur.com/8ayodnp.jpg
関数名は英数字1文字、ネストされた関数の引数は数字1文字にしてるけどこんな感じでいけるかと
\w\(\w\(\d\)(?:,\s*\w\(\d\))*\)
https://i.imgur.com/8ayodnp.jpg
555デフォルトの名無しさん
2022/11/04(金) 19:23:25.88ID:aOu/uEdM556デフォルトの名無しさん
2022/11/05(土) 19:55:25.05ID:xnenmrxP 下のようなテキストがあった時、
フシギダネ、たねポケモン。生まれてから、しばらくの間は背中のタネから栄養をもらって大きく育つ。
フシギソウ、たねポケモン。背中のつぼみがふくらみだすと、あまい匂いが漂い始める。
フシギバナ、たねポケモン。雨の降った翌日は、背中の花の香りが強まる。
その行で最初に出てきた「、」だけをTabで置換したいのですが、
正規表現でなんとかできますかね?(´・ω・`)
フシギダネ、たねポケモン。生まれてから、しばらくの間は背中のタネから栄養をもらって大きく育つ。
フシギソウ、たねポケモン。背中のつぼみがふくらみだすと、あまい匂いが漂い始める。
フシギバナ、たねポケモン。雨の降った翌日は、背中の花の香りが強まる。
その行で最初に出てきた「、」だけをTabで置換したいのですが、
正規表現でなんとかできますかね?(´・ω・`)
557デフォルトの名無しさん
2022/11/05(土) 19:57:13.42ID:Gow5Zgrm 顔文字が気持ち悪い
558デフォルトの名無しさん
2022/11/05(土) 19:57:30.67ID:KyEMh/LJ マルチラインモードのg無し置換でええのでは?
559デフォルトの名無しさん
2022/11/05(土) 20:01:38.81ID:xnenmrxP すみません。7分で自己解決しました。(´・ω・`)
560デフォルトの名無しさん
2022/11/06(日) 18:52:14.69ID:Ju9kLy6l >>559.replace('(´・ω・`)', '');
561デフォルトの名無しさん
2022/11/06(日) 18:56:40.82ID:gpiofWbc >>560
エスケープしろ
エスケープしろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 高市「発言は撤回しない。謝罪もするな。外務省局長!任せたぞ。」👈なにをさせたかったの?😲 [826239858]
- 【実況】博衣こよりのえちえち歌枠🧪
- 外務省局長、よくわからないまま帰国へ [834922174]
- ぶっちゃけ普通の日本人は台湾とかどうでもよくて、野蛮な反日国中国が偉そうにするのがムカつく!という感情論だけだよね… [452836546]
- 自分に自信がない女の子、陽キャ美容室で80cmのエクステを付けた結果wwwwwwwwwwwwwwwwwww [329329848]
