Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part13
http://echo.2ch.net/test/read.cgi/tech/1415149975/
次スレは>>980宜しく
天ぷら等2以降
探検
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/03/15(水) 02:04:35.47ID:e01p03UP773デフォルトの名無しさん
2019/01/10(木) 14:50:11.25ID:Q3mhk3sM >>772
いいねw まったく思い付きもしなかったアイデアwww
いいねw まったく思い付きもしなかったアイデアwww
774デフォルトの名無しさん
2019/01/10(木) 15:21:01.00ID:Q3mhk3sM >>772
chrome on mac だけどブックマークではダメで、設定→検索エンジン→検索エンジンの管理→追加 から登録しないといけなかったわ。
chrome on mac だけどブックマークではダメで、設定→検索エンジン→検索エンジンの管理→追加 から登録しないといけなかったわ。
775デフォルトの名無しさん
2019/01/13(日) 18:46:07.60ID:vFHHKg45776デフォルトの名無しさん
2019/01/26(土) 10:17:12.64ID:rNPVIr5d 否定先読み
と言うのがなかなか理解出来ないのですが、
サンプルを動かすと確かに動作するのですが、
今一つ仕組みが分かりません。
どんなふうに理解すれば良いのでしょうか?
と言うのがなかなか理解出来ないのですが、
サンプルを動かすと確かに動作するのですが、
今一つ仕組みが分かりません。
どんなふうに理解すれば良いのでしょうか?
777729
2019/01/26(土) 10:42:36.00ID:K4a4emwR 文字じゃなくて位置(文字と文字の間)に一致すると考えればいい
たとえば
abcdef
が対象の場合
肯定先読み(?=def)は直後にdefがある位置(cとdの間の位置)に一致する
abc[ここ]def
否定先読み(?!def)は直後にdefがない位置に一致する
[ここ]a[ここ]b[ここ]cd[ここ]e[ここ]f[ここ]
行頭の^や行末の$も文字じゃなくて位置に一致する
たとえば
abcdef
が対象の場合
肯定先読み(?=def)は直後にdefがある位置(cとdの間の位置)に一致する
abc[ここ]def
否定先読み(?!def)は直後にdefがない位置に一致する
[ここ]a[ここ]b[ここ]cd[ここ]e[ここ]f[ここ]
行頭の^や行末の$も文字じゃなくて位置に一致する
778デフォルトの名無しさん
2019/01/26(土) 11:13:09.45ID:yVAkGzul なるほどthx
779デフォルトの名無しさん
2019/01/26(土) 11:53:37.94ID:mL4if6wW780デフォルトの名無しさん
2019/01/26(土) 15:19:07.07ID:exLOU4gz 先読みはマッチさせたら、マッチ開始位置に戻るから、
単なる位置指定で、幅を持たない。
単なる条件を追加した、フィルター
否定先読みはマッチしない場合に、マッチ開始位置に戻る
先読みは、マッチ位置の直後の条件を指定するが、
戻り読みは、マッチ位置の直前の条件を指定する
単なる位置指定で、幅を持たない。
単なる条件を追加した、フィルター
否定先読みはマッチしない場合に、マッチ開始位置に戻る
先読みは、マッチ位置の直後の条件を指定するが、
戻り読みは、マッチ位置の直前の条件を指定する
781デフォルトの名無しさん
2019/01/27(日) 10:46:10.47ID:Th+zYLMn782デフォルトの名無しさん
2019/01/28(月) 10:47:47.80ID:wg8XKdax .netでの正規表現に迷ってます。
次の文字列のとき、"efgh/1"以降に"/"が含まれないときマッチするような正規表現を書きたいのです。
http://192.168.1.100/abcd/efgh/1 →True
http://192.168.1.100/abcd/efgh/1/ →False
http://192.168.1.100/abcd/efgh/12 →True
http://192.168.1.100/abcd/efgh/123/ →False
http://192.168.1.100/abcd/efgh/1?p=1 →True
次のような正規表現を試してみましたが、数値1文字しか対応できませんでした。
\/efgh\/[0-9]+(?!\/)
次の文字列のとき、"efgh/1"以降に"/"が含まれないときマッチするような正規表現を書きたいのです。
http://192.168.1.100/abcd/efgh/1 →True
http://192.168.1.100/abcd/efgh/1/ →False
http://192.168.1.100/abcd/efgh/12 →True
http://192.168.1.100/abcd/efgh/123/ →False
http://192.168.1.100/abcd/efgh/1?p=1 →True
次のような正規表現を試してみましたが、数値1文字しか対応できませんでした。
\/efgh\/[0-9]+(?!\/)
783デフォルトの名無しさん
2019/01/28(月) 10:57:25.94ID:DdBbxYrt \/efgh\/1[^/]*$
ではダメかな
ではダメかな
784デフォルトの名無しさん
2019/01/28(月) 12:18:39.25ID:c4Y7c3OH >>783でいいと思う
あとスラッシュにエスケープは不要だから/efgh/1[^/]*$
否定先読みが使いたいなら /efgh/[0-9]+(?!.*/)
(?!.*/)はそれ以降/が含まれない位置という意味
(?!/)だと直後に/がない位置という意味だから数字が2文字以上続いたらマッチしてしまう
あとスラッシュにエスケープは不要だから/efgh/1[^/]*$
否定先読みが使いたいなら /efgh/[0-9]+(?!.*/)
(?!.*/)はそれ以降/が含まれない位置という意味
(?!/)だと直後に/がない位置という意味だから数字が2文字以上続いたらマッチしてしまう
785デフォルトの名無しさん
2019/01/28(月) 12:21:15.63ID:c4Y7c3OH ごめん1って決まってるならこれでいいな
/efgh/1(?!.*/)
/efgh/1(?!.*/)
786782
2019/01/28(月) 15:51:48.42ID:wg8XKdax787デフォルトの名無しさん
2019/01/29(火) 06:11:22.47ID:mzqJgDrY $1
Windows PowerShell Cookbook
Regular Expressions Cookbook
Perl Cookbook
PHP Cookbook
Android Cookbook
Humble Book Bundle: Programming Cookbooks by O'Reilly (pay what you want and help charity)
https://www.humblebundle.com/books/programming-cookbooks
Windows PowerShell Cookbook
Regular Expressions Cookbook
Perl Cookbook
PHP Cookbook
Android Cookbook
Humble Book Bundle: Programming Cookbooks by O'Reilly (pay what you want and help charity)
https://www.humblebundle.com/books/programming-cookbooks
788デフォルトの名無しさん
2019/01/29(火) 06:32:49.85ID:mzqJgDrY Tools for Working with Regular Expressions
RegexBuddy
RegexPal
RegexMagic
More Online Regex Testers
RegexPlanet
regex.larsolavtorvik.com
Nregex
Rubular
myregexp.com
More Desktop Regular Expression Testers
Expresso
The Regulator
SDL Regex Fuzzer
PowerGREP
Windows Grep
RegexRenamer
RegexBuddy
RegexPal
RegexMagic
More Online Regex Testers
RegexPlanet
regex.larsolavtorvik.com
Nregex
Rubular
myregexp.com
More Desktop Regular Expression Testers
Expresso
The Regulator
SDL Regex Fuzzer
PowerGREP
Windows Grep
RegexRenamer
789デフォルトの名無しさん
2019/01/31(木) 16:07:48.62ID:Sc+6fvIO790デフォルトの名無しさん
2019/01/31(木) 16:08:40.61ID:Sc+6fvIO https://github.com/k-takata/Onigmo/issues/106
(?(n) (?: X | Y ) ) and (?(n) X | Y ) behavior is same.
(?: ) is left out.
(?(n) (?: X | Y ) | ) is nomal behavior.
This is a solution to a this bug problem.
ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]
bregonig.dll Ver.4.12 with Onigmo 6.1.2
(?(n) (?: X | Y ) ) and (?(n) X | Y ) behavior is same.
(?: ) is left out.
(?(n) (?: X | Y ) | ) is nomal behavior.
This is a solution to a this bug problem.
ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]
bregonig.dll Ver.4.12 with Onigmo 6.1.2
791デフォルトの名無しさん
2019/02/13(水) 00:35:05.11ID:HRhgNpoV 鬼雲には鬼雲を知ろうとすればするほど謎のテキストエディタの
情報が集まってくるという不思議な不具合があるがこのフィックスは不可能 :-)
情報が集まってくるという不思議な不具合があるがこのフィックスは不可能 :-)
792デフォルトの名無しさん
2019/03/07(木) 20:57:23.09ID:sEA+6w2y 今日元号の改正の準備で日付関連のコード書いてきたんだけど
>>695の置換が出来ると便利だったなという所があった
再帰が使えるのにこれが使えないのはバランス感覚に欠ける気がします
どうしてこうなった?
>>695の置換が出来ると便利だったなという所があった
再帰が使えるのにこれが使えないのはバランス感覚に欠ける気がします
どうしてこうなった?
793デフォルトの名無しさん
2019/03/12(火) 13:14:07.01ID:vSZ9R6NM 先読みの(?=huge)をつけると、後方がキャプチャーされません
そもそも前方に文字のない?=って使い方あってるでしょうか?
ちなみに言語はVB6です
そもそも前方に文字のない?=って使い方あってるでしょうか?
ちなみに言語はVB6です
794デフォルトの名無しさん
2019/03/13(水) 00:19:48.81ID:heD+eXgL Are you japanese?
Your japan language is strange.
Please show me sample codes.
Your japan language is strange.
Please show me sample codes.
795デフォルトの名無しさん
2019/03/13(水) 01:39:37.63ID:bUFEpZHr あなたの英語も変ですよ。
日本人はJapaneseとキャピタライズしてください。
日本語もjapan languageではなくJapanese languageです。
Japaneseだけで日本語という意味になりますが、前の文で日本人という意味で使っているのでlanguageを付けるのはいい判断でした。
また最後の文は、どうしても複数の例を見たいことを強調するのでない限りcodesではなくのcodeがふつうです。
不定冠詞のaも付けません。(絶対にただひとつの例だけ欲しいのでない限り)
日本人はJapaneseとキャピタライズしてください。
日本語もjapan languageではなくJapanese languageです。
Japaneseだけで日本語という意味になりますが、前の文で日本人という意味で使っているのでlanguageを付けるのはいい判断でした。
また最後の文は、どうしても複数の例を見たいことを強調するのでない限りcodesではなくのcodeがふつうです。
不定冠詞のaも付けません。(絶対にただひとつの例だけ欲しいのでない限り)
796デフォルトの名無しさん
2019/03/13(水) 02:16:45.79ID:heD+eXgL 自分の英語力は小学生相当なのでこんなもんです
教えてくれてありがとね
教えてくれてありがとね
797デフォルトの名無しさん
2019/03/13(水) 02:29:04.73ID:Z/ka/TFK irregular expression, exactly.
798デフォルトの名無しさん
2019/03/13(水) 08:53:04.20ID:heD+eXgL I am good at irregular expression.
799デフォルトの名無しさん
2019/03/13(水) 14:12:32.68ID:ZUOT1OTB nativeのひとに「あなた英語上手ですね」って言われても誉め言葉じゃないからな
その時点で下に観られてる
その時点で下に観られてる
800デフォルトの名無しさん
2019/03/14(木) 17:54:44.14ID:k53fNhgw 上手ですねと言われる可能性が0なので大丈夫です
801デフォルトの名無しさん
2019/04/22(月) 20:21:53.32ID:GQt1LKrG sed
置換
1に挟まれたN個以下の0または-で構成された文字列を、同数の1で置き換える
10001→11111
100-1→11111
1---1→11111
10-0-0001→111111111
置換対象と同数の文字列で置換するというところをどう正規表現で表すかわからず、、、
よろしくお願いします
置換
1に挟まれたN個以下の0または-で構成された文字列を、同数の1で置き換える
10001→11111
100-1→11111
1---1→11111
10-0-0001→111111111
置換対象と同数の文字列で置換するというところをどう正規表現で表すかわからず、、、
よろしくお願いします
802デフォルトの名無しさん
2019/04/23(火) 05:37:05.12ID:TbAsj7lM 正規表現で数を数えるのは無理
マッチさせて自力で文字を数えるコード書いて入れ替えて
ちなみに\Gが使える正規表現環境なら正規表現単独で可能
マッチさせて自力で文字を数えるコード書いて入れ替えて
ちなみに\Gが使える正規表現環境なら正規表現単独で可能
803デフォルトの名無しさん
2019/04/23(火) 07:05:11.04ID:k/th3sVe >>801
sed ':r; s/1[0-]\([0-]*1\)/11\1/; tr'
前方に 1 のある 10 を 11 に置換する
置換に成功したら tラベル で :ラベル の位置に戻って繰り返す
sed ':r; s/1[0-]\([0-]*1\)/11\1/; tr'
前方に 1 のある 10 を 11 に置換する
置換に成功したら tラベル で :ラベル の位置に戻って繰り返す
804デフォルトの名無しさん
2019/04/23(火) 08:49:46.57ID:ef59e0DS805デフォルトの名無しさん
2019/04/23(火) 10:21:33.54ID:yIB0exXp806デフォルトの名無しさん
2019/04/23(火) 11:46:04.64ID:ef59e0DS807デフォルトの名無しさん
2019/04/23(火) 12:07:17.02ID:yIB0exXp >>806
()で囲うとなってれば入れ子のケースは当然問題になるんだから
入れ子を考慮する必要があるかを明確に定義してないのは駄目な仕様。
10-以外が現れた場合の扱いも明記されていない
→現れることはないとみなしている
んだから
100010は現れないと想定して書く選択肢もある。
いずれにしろ、不明瞭な仕様を書く奴は無能だし、
勝手に解釈するのも実際の仕事じゃトラブルの元。
()で囲うとなってれば入れ子のケースは当然問題になるんだから
入れ子を考慮する必要があるかを明確に定義してないのは駄目な仕様。
10-以外が現れた場合の扱いも明記されていない
→現れることはないとみなしている
んだから
100010は現れないと想定して書く選択肢もある。
いずれにしろ、不明瞭な仕様を書く奴は無能だし、
勝手に解釈するのも実際の仕事じゃトラブルの元。
808デフォルトの名無しさん
2019/04/23(火) 12:23:27.03ID:ZY45SR7V Ruby なら、
re = /1([^1]+)1/ # 1〜1 で、はさまれた部分
str = "x10-0y0-1x"
# $1 は、capture 部分で、0-0y0-。この部分を置換する。
# 結果は、x1 (111y11) 1x
p str.sub( re ) { |s| "1" + $1.gsub( /[0-]/, "1" ) + "1" }
re = /1([^1]+)1/ # 1〜1 で、はさまれた部分
str = "x10-0y0-1x"
# $1 は、capture 部分で、0-0y0-。この部分を置換する。
# 結果は、x1 (111y11) 1x
p str.sub( re ) { |s| "1" + $1.gsub( /[0-]/, "1" ) + "1" }
809デフォルトの名無しさん
2019/04/23(火) 12:38:52.51ID:ef59e0DS >>807
反論と取られたのかな
反論でも賛意でもないよ
個人的には>>801が「よい定義や仕様」とは欠片も思わない一方で「ダメダメ」とも思わない
組んでいく中で詳細を詰めていくことも現実としてある
あなたが求めているようながっちり仕様が決まっていたらむしろやることなんてほぼないかも
単に日本語を翻訳する作業になるのでむしろ苦痛かな…
そこまで詰められるなら日本語で指示しないで自分で書けよと思ってしまうかも
スレ的に読み替えればがっちり仕様を出した上で「これは正規表現で可能か?」という命題に繋がるのでスレでがっちり仕様を出すなと言う意味ではないです(念為)
仕事でもなし頭の体操的にてきとーに答えてるだけなんでこれくらいなら気にしない派
反論と取られたのかな
反論でも賛意でもないよ
個人的には>>801が「よい定義や仕様」とは欠片も思わない一方で「ダメダメ」とも思わない
組んでいく中で詳細を詰めていくことも現実としてある
あなたが求めているようながっちり仕様が決まっていたらむしろやることなんてほぼないかも
単に日本語を翻訳する作業になるのでむしろ苦痛かな…
そこまで詰められるなら日本語で指示しないで自分で書けよと思ってしまうかも
スレ的に読み替えればがっちり仕様を出した上で「これは正規表現で可能か?」という命題に繋がるのでスレでがっちり仕様を出すなと言う意味ではないです(念為)
仕事でもなし頭の体操的にてきとーに答えてるだけなんでこれくらいなら気にしない派
810デフォルトの名無しさん
2019/04/23(火) 13:02:53.90ID:k/th3sVe % printf '100010\n1000101\n' | sed ':r; s/1[0-]\([0-]*1\)/11\1\n/; tr; s/\n//g'
111110
1111101
%
111110
1111101
%
811801
2019/04/23(火) 13:49:39.47ID:CFFnqXFD 問題が曖昧であったため議論を紛糾させてしまいました。すみません。
たしかに入れ子のことや、一致する最初の文字列か、最長か、01-以外の文字の存在などを明確に記載できていませんでした。
今回の問題で聞きたかったことをシンプルに表現すると、検索文字列の文字数(1〜N個)に依存した置換が可能なのか、になります。
そこについては先の人が回答してくださった通り、文字数を記憶しておくような処理は不可能であるから正規表現の範疇ではないと思いました。
これまでの意見から当初目的ではないものの多くのヒントをもらいました。ありがとうございました。
問題提示者としていたらないながら、この話はクローズさせていただきます。
たしかに入れ子のことや、一致する最初の文字列か、最長か、01-以外の文字の存在などを明確に記載できていませんでした。
今回の問題で聞きたかったことをシンプルに表現すると、検索文字列の文字数(1〜N個)に依存した置換が可能なのか、になります。
そこについては先の人が回答してくださった通り、文字数を記憶しておくような処理は不可能であるから正規表現の範疇ではないと思いました。
これまでの意見から当初目的ではないものの多くのヒントをもらいました。ありがとうございました。
問題提示者としていたらないながら、この話はクローズさせていただきます。
812デフォルトの名無しさん
2019/04/23(火) 13:52:46.13ID:yIB0exXp >>809
反論だなんて受取ってないから妄想やめて。
定義が曖昧過ぎてねえ…
としか言ってないから。
01-以外でいいのか、1.*1でいいのか
などなど要件がこんな不明瞭じゃねえ
と言う話しかしてないのであしからず。
反論だなんて受取ってないから妄想やめて。
定義が曖昧過ぎてねえ…
としか言ってないから。
01-以外でいいのか、1.*1でいいのか
などなど要件がこんな不明瞭じゃねえ
と言う話しかしてないのであしからず。
813デフォルトの名無しさん
2019/04/23(火) 13:54:41.14ID:yIB0exXp814デフォルトの名無しさん
2019/04/23(火) 15:45:58.43ID:ef59e0DS816デフォルトの名無しさん
2019/04/23(火) 19:20:56.30ID:GneiHx9I まーまー、ここはわしの顔を立てて双方おとなしくしてくれまいか。
817デフォルトの名無しさん
2019/04/23(火) 19:41:58.96ID:ef59e0DS818デフォルトの名無しさん
2019/04/23(火) 19:46:57.33ID:yIB0exXp819デフォルトの名無しさん
2019/04/24(水) 19:37:45.85ID:kN2xWSes 質問者の例題は数に応じた置換の簡単なサンプルが欲しくて書いたものだと思う
再帰的に無理やり導くクソコードなんて書かれても迷惑なだけでしょ
再帰的に無理やり導くクソコードなんて書かれても迷惑なだけでしょ
820デフォルトの名無しさん
2019/04/24(水) 21:35:46.86ID:SVxlletW 端からは大人と子供
ご愁傷様
ご愁傷様
821デフォルトの名無しさん
2019/04/25(木) 02:00:13.99ID:nkf4NYVZ pythonスレで似たテーマ観たからマルチ認定
822デフォルトの名無しさん
2019/04/26(金) 22:15:29.45ID:pXwlHtT3 sedとpythonじゃまるで違うから別件だろうな
>>817
勘違いして迷惑かけた分際で「ぐちぐち」って言葉を使うか普通..
というかこの文体、昔セガBBSにいた南瓜さんという人にそっくりだな
別人だろうけど思い出してワロタ
>>817
勘違いして迷惑かけた分際で「ぐちぐち」って言葉を使うか普通..
というかこの文体、昔セガBBSにいた南瓜さんという人にそっくりだな
別人だろうけど思い出してワロタ
823デフォルトの名無しさん
2019/04/26(金) 22:34:09.92ID:7hEPz6dq しばらくぶりにノゾいたらワロタ
ID:yIB0exXp
http://hissi.org/read.php/tech/20190423/eUlCMGV4WHA.html
平日の朝から晩まで
内容がとっても抽象的
ネット弁慶クンってホントにいるんだな!w
ID:yIB0exXp
http://hissi.org/read.php/tech/20190423/eUlCMGV4WHA.html
平日の朝から晩まで
内容がとっても抽象的
ネット弁慶クンってホントにいるんだな!w
824デフォルトの名無しさん
2019/04/26(金) 23:09:55.86ID:DINb0EDe マ板恒例、湿度高めの展開になってきましたー
825デフォルトの名無しさん
2019/04/27(土) 13:12:59.58ID:W9D3URJl オブジェクト指向最高さんは今回まったく落ち度が無い
迷惑かけといて素直に謝ることも出来ないくそコード製造機はもう来なくていい
迷惑かけといて素直に謝ることも出来ないくそコード製造機はもう来なくていい
826デフォルトの名無しさん
2019/04/27(土) 21:25:24.59ID:CxhHumup 翌日以降もこんな感じですよ
ttp://hissi.org/read.php/tech/20190424/M1dYN3QzOXA.html
ttp://hissi.org/read.php/tech/20190425/VThrOUNyV3U.html
ttp://hissi.org/read.php/tech/20190426/NGZaS2JZWkg.html
ttp://hissi.org/read.php/tech/20190427/QzZmMHJVWmE.html
こちらで引き取ってもらえませんか?
ttp://hissi.org/read.php/tech/20190424/M1dYN3QzOXA.html
ttp://hissi.org/read.php/tech/20190425/VThrOUNyV3U.html
ttp://hissi.org/read.php/tech/20190426/NGZaS2JZWkg.html
ttp://hissi.org/read.php/tech/20190427/QzZmMHJVWmE.html
こちらで引き取ってもらえませんか?
827デフォルトの名無しさん
2019/05/04(土) 22:49:23.33ID:Wy3P56AZ 引き取ってくれてありがとう〜(^。^)
828デフォルトの名無しさん
2019/05/29(水) 23:29:43.55ID:NoMeOMsF よろしくお願い致します。
●Regular Expressionの使用環境
Python 3.7
●検索か置換か?
検索
●説明
3つ目と4つ目のダブルクオートの間の文字列を探す
●対象データ
"文字列1":[1000:"文字列2"]
●希望する結果
文字列2
●Regular Expressionの使用環境
Python 3.7
●検索か置換か?
検索
●説明
3つ目と4つ目のダブルクオートの間の文字列を探す
●対象データ
"文字列1":[1000:"文字列2"]
●希望する結果
文字列2
829デフォルトの名無しさん
2019/05/30(木) 07:22:28.54ID:NTWA4E5y830デフォルトの名無しさん
2019/05/30(木) 08:48:50.22ID:ZbLZAkBS >>829
文字列1が空だと空振るのでいっそベタ書きするかな
それと対象の規模によっては計算量も30%少なくて済む
"[^"]*"[^"]*"([^"]*)"
くどいーと思ってまとめてみても
"(?:[^"]*"){2}([^"]*)"
若干悪化して15%offくらいに留まる
文字列1が空だと空振るのでいっそベタ書きするかな
それと対象の規模によっては計算量も30%少なくて済む
"[^"]*"[^"]*"([^"]*)"
くどいーと思ってまとめてみても
"(?:[^"]*"){2}([^"]*)"
若干悪化して15%offくらいに留まる
831デフォルトの名無しさん
2019/05/30(木) 09:14:01.64ID:js+SNbQS やっぱり可変長の戻り読み使えないなら後方参照で抜き出すしかないよね
というか正規表現以外で抜き出した方が処理軽いんじゃ
というか正規表現以外で抜き出した方が処理軽いんじゃ
832デフォルトの名無しさん
2019/05/30(木) 10:41:49.43ID:NTWA4E5y833デフォルトの名無しさん
2019/05/30(木) 16:00:31.98ID:0UuZnvit834デフォルトの名無しさん
2019/06/12(水) 18:51:34.75ID:8qMgnvIv 正規表現で全角記号だけ抜き出す事はできますか?
★ファイル名
みたいにして先頭に来るようにしてたんですが、全角記号はエラーおこすことがあるようです
★ファイル名
みたいにして先頭に来るようにしてたんですが、全角記号はエラーおこすことがあるようです
835デフォルトの名無しさん
2019/06/12(水) 20:16:21.08ID:ATCcrAWn なんの処理系か書けよな
836デフォルトの名無しさん
2019/06/12(水) 20:18:49.53ID:0U8oWwW8 使用する文字コードも
837デフォルトの名無しさん
2019/06/17(月) 00:16:17.89ID:ks+4WGLz 助けてください。おながいします
●Regular Expressionの使用環境
Sakura Editor
(begonig.dll ver.3.06 with Onigmo 5.15.0)
●検索か置換か?
検索
●説明
日本語の文章の中に、全角英字が混じっています。
「全角英字の単語直後の任意の1文字」をマッチさせたいです。
(?<=[a-zA-Z]+).
でいけると思ったのですが、invalid pattern in look-behindでエラーになってしまいます。
どうもDLLの仕様で肯定後読みの式は固定文字長でなければならないらしく、代替案がないかなーと……
●対象データ
ああいいいabcうABCえおかきくけ
●希望する結果
「う」、「え」の2か所
●Regular Expressionの使用環境
Sakura Editor
(begonig.dll ver.3.06 with Onigmo 5.15.0)
●検索か置換か?
検索
●説明
日本語の文章の中に、全角英字が混じっています。
「全角英字の単語直後の任意の1文字」をマッチさせたいです。
(?<=[a-zA-Z]+).
でいけると思ったのですが、invalid pattern in look-behindでエラーになってしまいます。
どうもDLLの仕様で肯定後読みの式は固定文字長でなければならないらしく、代替案がないかなーと……
●対象データ
ああいいいabcうABCえおかきくけ
●希望する結果
「う」、「え」の2か所
838デフォルトの名無しさん
2019/06/17(月) 02:22:40.96ID:FPrxRapn (?<=[a-zA-Z])[^a-zA-Z]
839デフォルトの名無しさん
2019/06/17(月) 06:40:06.13ID:LXSfy5ij840デフォルトの名無しさん
2019/06/17(月) 21:52:38.33ID:ks+4WGLz841デフォルトの名無しさん
2019/06/18(火) 22:51:14.09ID:y1gFJJpS ちょっとした疑問
アラビア語のような右書き言葉だと正規表現をどう書くのだろう
文字列も正規表現も右書きだから、/xyz$/ は /$zyx/ ?
(レス不要です)
アラビア語のような右書き言葉だと正規表現をどう書くのだろう
文字列も正規表現も右書きだから、/xyz$/ は /$zyx/ ?
(レス不要です)
842デフォルトの名無しさん
2019/06/19(水) 05:02:00.28ID:tVNS+22r 【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
843デフォルトの名無しさん
2019/06/19(水) 14:27:57.27ID:Yoy0IPRe いし正が左らか右は語本日
844デフォルトの名無しさん
2019/06/23(日) 22:51:37.03ID:WHM6Ibwm >>834
理論上は
|
で全部やればできる
ちょうど単なる全角(
1文字が2つの幅をもつ
ロシアの言語なども2幅
)
を捉えようとしていたので道具を紹介
https://i.imgur.com/9l39lUv.jpg
正規表現は (.) で1文字を習得し
バイト数が1でないものを拾うロジック
理論上は
|
で全部やればできる
ちょうど単なる全角(
1文字が2つの幅をもつ
ロシアの言語なども2幅
)
を捉えようとしていたので道具を紹介
https://i.imgur.com/9l39lUv.jpg
正規表現は (.) で1文字を習得し
バイト数が1でないものを拾うロジック
845デフォルトの名無しさん
2019/06/24(月) 06:26:17.63ID:F4CLQWNj ttps://so-zou.jp/software/tech/programming/tech/regular-expression/meta-character/variable-width-encoding.htm
こういうので全角記号だけさっくり選ばせろって事なんだろうけど
全角半角はユニコードだとフォント依存なので曖昧
ascii 以外って意味で言ってるんだろうけど
恐らく"ファイル名"て事からSJisの範疇外の文字って事かなと
こういうので全角記号だけさっくり選ばせろって事なんだろうけど
全角半角はユニコードだとフォント依存なので曖昧
ascii 以外って意味で言ってるんだろうけど
恐らく"ファイル名"て事からSJisの範疇外の文字って事かなと
846デフォルトの名無しさん
2019/06/24(月) 21:23:57.79ID:4+LiJo6+ 一文字決めうち かつ あらっぽいコレクション
vim の :h digraphs には結構ある
[??????????▲△??▼▽??◆◇?○◎●??????★☆?????♀♂?????♪?♭?♯??? 、。〃?々〆〇《》]
vim の :h digraphs には結構ある
[??????????▲△??▼▽??◆◇?○◎●??????★☆?????♀♂?????♪?♭?♯??? 、。〃?々〆〇《》]
847デフォルトの名無しさん
2019/06/24(月) 21:24:32.12ID:4+LiJo6+ [??????????▲△??▼▽??◇?○◎●??????★☆?????♀♂?????♪?♭?♯??? 、。〃?々〆〇《》]
848デフォルトの名無しさん
2019/06/24(月) 21:24:52.95ID:4+LiJo6+ [??????????△??▼▽??◆◇?○◎●??????★☆?????♀♂?????♪?♭?♯??? 、。〃?々〆〇《》]
849デフォルトの名無しさん
2019/06/24(月) 21:28:31.79ID:4+LiJo6+ おわった
NG word 群が正規表現を妨げる
一文字限定なら [] の処理が早い
vim の :h digraphs
には 1300個ぐらいの 記号を含むデータリストがあるから
それから組みたてやすい とおもう
NG word 群が正規表現を妨げる
一文字限定なら [] の処理が早い
vim の :h digraphs
には 1300個ぐらいの 記号を含むデータリストがあるから
それから組みたてやすい とおもう
850デフォルトの名無しさん
2019/06/24(月) 21:56:38.71ID:meJBThiE NGワードと文字化けの区別ができない人は書き込んじゃダメ。
851デフォルトの名無しさん
2019/06/24(月) 23:17:52.70ID:4+LiJo6+ そういえばブラウザに NG word に指定したのは自分だった
あらしが記号を使ってたことがあったので
あらしが記号を使ってたことがあったので
852デフォルトの名無しさん
2019/06/25(火) 07:18:11.77ID:0Do2GL77 荒らしが記号を使うことと書き込みを制限することに全く関連が無い
853デフォルトの名無しさん
2019/06/25(火) 08:36:20.64ID:Y04/VZ6Y854デフォルトの名無しさん
2019/07/08(月) 00:38:09.05ID:m6vFYfK4 ●Regular Expressionの使用環境
サクラエディタ(か秀丸エディタ)
●検索か置換か?
置換
●説明
不定回数のパターンを置換したい。
●対象データ
[A=a,A=b,A=c,A=d,・・・・]
・・・・の部分はどこまで続くのかは決まってない。が、多くても20個くらい
●希望する結果
A=a,b,c,d・・・・
サクラエディタ(か秀丸エディタ)
●検索か置換か?
置換
●説明
不定回数のパターンを置換したい。
●対象データ
[A=a,A=b,A=c,A=d,・・・・]
・・・・の部分はどこまで続くのかは決まってない。が、多くても20個くらい
●希望する結果
A=a,b,c,d・・・・
855デフォルトの名無しさん
2019/07/08(月) 05:29:01.40ID:9IE9wmRC (?<!^)A=
856854
2019/07/08(月) 23:27:17.45ID:Rb/08H3f >>855
ありがとうございます。
否定戻り読みってこうやって使うのですね。
もうちょっと深掘りして以下の場合どのようになるでしょう。
■対象データ
[A=a OR A=b OR A=c OR A=d・・・・]
[B=d OR B=c OR B=b OR B=a・・・・]
[C=a OR C=b OR C=c OR C=d・・・・]
■希望結果
A=a,b,c,d
B=d,c,b,a
C=a,b,c,d
ORの部分が難しくて混乱しています。。
ありがとうございます。
否定戻り読みってこうやって使うのですね。
もうちょっと深掘りして以下の場合どのようになるでしょう。
■対象データ
[A=a OR A=b OR A=c OR A=d・・・・]
[B=d OR B=c OR B=b OR B=a・・・・]
[C=a OR C=b OR C=c OR C=d・・・・]
■希望結果
A=a,b,c,d
B=d,c,b,a
C=a,b,c,d
ORの部分が難しくて混乱しています。。
857デフォルトの名無しさん
2019/07/10(水) 08:43:33.27ID:WA2fRW/e \s++OR\s++.=
,
,
858デフォルトの名無しさん
2019/07/10(水) 09:18:54.80ID:StxWbt+s ここの住民の正規表現能力は超人的だ
お節介させてくれ
もし使用環境に perl があれば、
ウルトラ難しい正規表現を理解可能な小さなパーツに分類できる
cat /dev/clipboard
[A=a OR A=b OR A=c OR A=d・・・・]
[B=d OR B=c OR B=b OR B=a・・・・]
[C=a OR C=b OR C=c OR C=d・・・・]
cat /dev/clipboard | perl -ne 'if ( m{^ \[ ( \w+ [=] ) }xcm) {print $1}; { if ( m{ = (\w+) \s }xcg ) {print "$1,"; redo} if ( m{ = (\w+) \S }xc ) {print "$1\n"} }'
A=a,b,c,d
B=d,c,b,a
C=a,b,c,d
お節介させてくれ
もし使用環境に perl があれば、
ウルトラ難しい正規表現を理解可能な小さなパーツに分類できる
cat /dev/clipboard
[A=a OR A=b OR A=c OR A=d・・・・]
[B=d OR B=c OR B=b OR B=a・・・・]
[C=a OR C=b OR C=c OR C=d・・・・]
cat /dev/clipboard | perl -ne 'if ( m{^ \[ ( \w+ [=] ) }xcm) {print $1}; { if ( m{ = (\w+) \s }xcg ) {print "$1,"; redo} if ( m{ = (\w+) \S }xc ) {print "$1\n"} }'
A=a,b,c,d
B=d,c,b,a
C=a,b,c,d
859デフォルトの名無しさん
2019/07/10(水) 09:35:40.67ID:StxWbt+s そして同じような形を処理するのに
必要な正規表現が大きく変わったりしない
cat /dev/clipboard
[A=a,A=b,A=c,A=d,A=e,A=f,A=g,A=h,A=i,A=j]
cat /dev/clipboard | perl -ne 'if ( m{^ \[ ( \w+ [=] ) }xcm) {print $1}; { if ( m{ = ( \w+ [,] ) }cxg ) {print "$1"; redo} if ( m{ = (\w+) [^,] }xc ) {print "$1\n"} }'
A=a,b,c,d,e,f,g,h,i,j
必要な正規表現が大きく変わったりしない
cat /dev/clipboard
[A=a,A=b,A=c,A=d,A=e,A=f,A=g,A=h,A=i,A=j]
cat /dev/clipboard | perl -ne 'if ( m{^ \[ ( \w+ [=] ) }xcm) {print $1}; { if ( m{ = ( \w+ [,] ) }cxg ) {print "$1"; redo} if ( m{ = (\w+) [^,] }xc ) {print "$1\n"} }'
A=a,b,c,d,e,f,g,h,i,j
860854
2019/07/11(木) 01:01:12.77ID:/KpWZOtx861デフォルトの名無しさん
2019/07/11(木) 21:00:44.92ID:SCYCuKB+862デフォルトの名無しさん
2019/07/13(土) 20:47:25.54ID:57lWPs8z 動作についての質問です。よろしくお願いします。
●Regular Expressionの使用環境
JavaScript (chrome)
●検索か置換か?
検索
●説明
'@time;prop1:style1;prop2:style2'.match(/(^|[@;])[^@;]*/g); が
["", ";prop1:style1", ";prop2:style2"] になる理由が分かりません。私の理解では、
["", "@time",";prop1:style1", ";prop2:style2"] となって欲しいところです。
どなたか説明お願いします。
^は文字列検索位置を「動かさない」と認識しています。
(以前は「動かす」と誤認識していましたが、何かで見解を改められたことを記憶しています)
●対象データ
ID@time;style 形式の指定で、
ID、time、styleの省略は全てありで、timeとstyleの順序は自由(IDは必ず先頭)
@開始はtime指定、それ以外はstyle指定とし、デリミタは ; としています。
この形式で任意の文字列(ユーザー入力)を処理します。
なお、'@time;prop1:style1;prop2:style2'.match(/(^.|[@;])[^@;]*/g); では希望の解
["@time", ";prop1:style1", ";prop2:style2"] を得られていますが、
デバッグ中に上記に引っかかったので、分かりましたらよろしくお願いいたします。
●Regular Expressionの使用環境
JavaScript (chrome)
●検索か置換か?
検索
●説明
'@time;prop1:style1;prop2:style2'.match(/(^|[@;])[^@;]*/g); が
["", ";prop1:style1", ";prop2:style2"] になる理由が分かりません。私の理解では、
["", "@time",";prop1:style1", ";prop2:style2"] となって欲しいところです。
どなたか説明お願いします。
^は文字列検索位置を「動かさない」と認識しています。
(以前は「動かす」と誤認識していましたが、何かで見解を改められたことを記憶しています)
●対象データ
ID@time;style 形式の指定で、
ID、time、styleの省略は全てありで、timeとstyleの順序は自由(IDは必ず先頭)
@開始はtime指定、それ以外はstyle指定とし、デリミタは ; としています。
この形式で任意の文字列(ユーザー入力)を処理します。
なお、'@time;prop1:style1;prop2:style2'.match(/(^.|[@;])[^@;]*/g); では希望の解
["@time", ";prop1:style1", ";prop2:style2"] を得られていますが、
デバッグ中に上記に引っかかったので、分かりましたらよろしくお願いいたします。
863デフォルトの名無しさん
2019/07/13(土) 23:13:26.72ID:57lWPs8z 正規表現の問題ではなくJavaScript固有の問題のようなので、質問を閉じ、
JavaScriptスレにて質問し直します。
興味のある方は以下をご覧ください。(これからすぐ投稿します)
https://mevius.5ch.net/test/read.cgi/tech/1417749547/341-
JavaScriptスレにて質問し直します。
興味のある方は以下をご覧ください。(これからすぐ投稿します)
https://mevius.5ch.net/test/read.cgi/tech/1417749547/341-
864デフォルトの名無しさん
2019/07/13(土) 23:31:59.74ID:57lWPs8z すいません自己解決しましたが一応。以下となりました。
https://mevius.5ch.net/test/read.cgi/tech/1417749547/341-342
https://mevius.5ch.net/test/read.cgi/tech/1417749547/341-342
865デフォルトの名無しさん
2019/07/14(日) 04:59:50.53ID:XILHsvHP この質問内容ならここで合ってます、jsスレよりもこのスレ向きです
正規表現には統一規格みたいなものは存在しないので環境によって動作が異なります
このスレの住民なら2番目のマッチが t から始まる環境も想定します
["","time", ";prop1:style1", ";prop2:style2"]
詳しい仕様を知らなくても動作を確認するコードを作っていろいろ試すと
どう動く環境なのかだいたい分かってしまうことが多いです
正規表現には統一規格みたいなものは存在しないので環境によって動作が異なります
このスレの住民なら2番目のマッチが t から始まる環境も想定します
["","time", ";prop1:style1", ";prop2:style2"]
詳しい仕様を知らなくても動作を確認するコードを作っていろいろ試すと
どう動く環境なのかだいたい分かってしまうことが多いです
866デフォルトの名無しさん
2019/07/14(日) 08:17:29.28ID:LdVrbIxu >>865
> 正規表現には統一規格みたいなものは存在しないので環境によって動作が異なります
これは知ってますがBREの範囲だと当然間違いなく動くし、
ほぼPCREに向けて統一中、といったところなのでは?
まあやたら複雑になってバックトラッキング等の問題が発生し、
結果的に速いライブラリに収束して行っているのはいいことだと思いますが。
> このスレの住民なら2番目のマッチが t から始まる環境も想定します
> ["","time", ";prop1:style1", ";prop2:style2"]
これは一応アウトなのでは?正規表現自体はデリミタごと取り込もうとしており、それが出来ていません。
これを言うならJavaScriptもアウトですが。
個人的にはJavaScriptは面白いのですが仕様がイマイチなところが散見されるのが難点ですね。
それが初心者に無用な混乱を引き起こし、上達の妨げになっている。
今回私も数時間無駄にしましたが、これが初心者だと脱出出来なくて誤解したままになってしまう。
そして本人はそれを自覚出来ず、Web上に間違った情報を垂れ流し、馬鹿が再生産されるというループになっている。
この意味では正規表現の現在の状況も同じようなものですが、
正規表現は「実装の幅がものすごくある」と共有されているだけまだましです。
JavaScriptの連中はその間違った実装を「正しい」と思いこんでいたりするので、会話が成立しません。
といってもJavaScriptのString.matchの仕様バグを今更直すことも出来ず、未来永劫このままだと思いますが。
> 正規表現には統一規格みたいなものは存在しないので環境によって動作が異なります
これは知ってますがBREの範囲だと当然間違いなく動くし、
ほぼPCREに向けて統一中、といったところなのでは?
まあやたら複雑になってバックトラッキング等の問題が発生し、
結果的に速いライブラリに収束して行っているのはいいことだと思いますが。
> このスレの住民なら2番目のマッチが t から始まる環境も想定します
> ["","time", ";prop1:style1", ";prop2:style2"]
これは一応アウトなのでは?正規表現自体はデリミタごと取り込もうとしており、それが出来ていません。
これを言うならJavaScriptもアウトですが。
個人的にはJavaScriptは面白いのですが仕様がイマイチなところが散見されるのが難点ですね。
それが初心者に無用な混乱を引き起こし、上達の妨げになっている。
今回私も数時間無駄にしましたが、これが初心者だと脱出出来なくて誤解したままになってしまう。
そして本人はそれを自覚出来ず、Web上に間違った情報を垂れ流し、馬鹿が再生産されるというループになっている。
この意味では正規表現の現在の状況も同じようなものですが、
正規表現は「実装の幅がものすごくある」と共有されているだけまだましです。
JavaScriptの連中はその間違った実装を「正しい」と思いこんでいたりするので、会話が成立しません。
といってもJavaScriptのString.matchの仕様バグを今更直すことも出来ず、未来永劫このままだと思いますが。
867デフォルトの名無しさん
2019/07/14(日) 10:58:08.46ID:wR6d2dgQ PCREに向けて統一中なんてどんな根拠で喋ってんだ
regex101で試してみれば分かるけどPCRE使ってるPHP以外のPython, ECMAScript, Goは全滅だぞ
regex101で試してみれば分かるけどPCRE使ってるPHP以外のPython, ECMAScript, Goは全滅だぞ
868デフォルトの名無しさん
2019/07/14(日) 12:13:01.78ID:LdVrbIxu >>867
ゴミという意味でだろ。
逆にお前はどう思ってるんだ?
JavaScriptのString.matchについては単にパッチを実装する場所を間違えただけ。
結果、String.match と RegExp.exec での結果が異なるという、言語内での不一致を引き起こしてる。
そしてこれはもう修正されることはない。
仕様バグとして永久に残り、プログラマに無駄な時間を消費させるだけのものとなる。
結果、言語が腐っていく。
正しくは RegExp.exec 側を修正し、両方とも無限ループにならずに
["", "@time",";prop1:style1", ";prop2:style2"]
を返すべきだった。
RegExp.lastIndex だけで状態管理出来ると「間違えた」からそうなった。
本来は先頭マッチフラグ RegExp.canMatchHead みたいなのが必要で、それを実装すれば両方とも正しい結果を返せた。
それを実装せず、String.match に間違ったパッチを当てたからそうなった。
これは実装者(おそらくブレンダンアイク本人)の判断ミスだ。
正規表現はPerlが再定義したと言っていい状況だ。だからみんなPCREを見てる。
PHPはさっさと取り込んだ。これは正しい判断だ。
JavaScriptはPCREを見てる。というか本来は取り込みたいのだろうが、上記のように今更部分がありすぎる。
Pythonには歴史的経緯があるのだろう、状況は知らん。
Goは最初から既にゴミだ。確実に廃れるだろうし、俺もそれを願っている。
そもそもGoなんてPCREが覇権取ったあとに出てきたのにPCREを採用してない時点でゴミ。
それ以外にもあの言語は独自路線を行き過ぎていて、ユーザーに無駄な勉強時間を強いている。
結果、既に他言語で慣らした強者が近づかず、結果的に馬鹿の楽園になってWeb系の馬鹿共に大受けしてるだけ。
Goの正規表現については詳しくは知らんが、仮にそれが奇妙な振る舞いをしたとして、お前はGo側の怠慢だと思わないのか?
JavaScriptやPython等それなりの歴史があるのならともかく、Goの場合は確実に防げた問題でしかない。
連中はそれを「わざと」やらなかったんだぞ。俺はそんな言語は支持しないし、ゴミだと何度でも断言する。
いずれにしても、今からの初心者が学ぶべきはPCREだろ。
お前は何が言いたいんだ?
ゴミという意味でだろ。
逆にお前はどう思ってるんだ?
JavaScriptのString.matchについては単にパッチを実装する場所を間違えただけ。
結果、String.match と RegExp.exec での結果が異なるという、言語内での不一致を引き起こしてる。
そしてこれはもう修正されることはない。
仕様バグとして永久に残り、プログラマに無駄な時間を消費させるだけのものとなる。
結果、言語が腐っていく。
正しくは RegExp.exec 側を修正し、両方とも無限ループにならずに
["", "@time",";prop1:style1", ";prop2:style2"]
を返すべきだった。
RegExp.lastIndex だけで状態管理出来ると「間違えた」からそうなった。
本来は先頭マッチフラグ RegExp.canMatchHead みたいなのが必要で、それを実装すれば両方とも正しい結果を返せた。
それを実装せず、String.match に間違ったパッチを当てたからそうなった。
これは実装者(おそらくブレンダンアイク本人)の判断ミスだ。
正規表現はPerlが再定義したと言っていい状況だ。だからみんなPCREを見てる。
PHPはさっさと取り込んだ。これは正しい判断だ。
JavaScriptはPCREを見てる。というか本来は取り込みたいのだろうが、上記のように今更部分がありすぎる。
Pythonには歴史的経緯があるのだろう、状況は知らん。
Goは最初から既にゴミだ。確実に廃れるだろうし、俺もそれを願っている。
そもそもGoなんてPCREが覇権取ったあとに出てきたのにPCREを採用してない時点でゴミ。
それ以外にもあの言語は独自路線を行き過ぎていて、ユーザーに無駄な勉強時間を強いている。
結果、既に他言語で慣らした強者が近づかず、結果的に馬鹿の楽園になってWeb系の馬鹿共に大受けしてるだけ。
Goの正規表現については詳しくは知らんが、仮にそれが奇妙な振る舞いをしたとして、お前はGo側の怠慢だと思わないのか?
JavaScriptやPython等それなりの歴史があるのならともかく、Goの場合は確実に防げた問題でしかない。
連中はそれを「わざと」やらなかったんだぞ。俺はそんな言語は支持しないし、ゴミだと何度でも断言する。
いずれにしても、今からの初心者が学ぶべきはPCREだろ。
お前は何が言いたいんだ?
869デフォルトの名無しさん
2019/07/14(日) 12:35:52.54ID:QmWR+pGh ゼロ幅で永久にマッチし続けるのになんで@timeに進めると思うの?
870デフォルトの名無しさん
2019/07/14(日) 13:05:26.62ID:LdVrbIxu >>869
お前は実装と仕様の違いを理解出来てないタイプだな。
String.matchは「マッチ全部を配列で返す」メソッドだ。
当然、無限ループなんてしてはいけない。
(ただし無限ループしない為に空文字マッチだと一文字進めるパッチだから仕様バグになってるが)
RegExp.execは「gマッチを一つずつ実行し、ユーザーがそこで適宜処理を行う」為のメソッドだ。
当然、何もしなければ順に次のマッチをしていくのが正しく、今現在のように無限ループするようでは駄目だ。
結果、今はユーザーが本来不要なコードを毎回書く羽目になってる。
具体的に言えば、 if (match!=='') が毎回必要になる。これが無駄だ。
JavaScript界隈にはお前みたいな馬鹿が多い。
本来はどうあるべきか、或いは何故この無駄なコードが必要なのか分からず、
今の「実装」が正しいと思いこんでいるタイプだ。
動かさないと分からない、あるいは動いていればいい程度のコードしか書けないからだが。
とはいえ、今回のようなケースに遭遇するとそうなるのも分かる気はするが。
いずれにしても、これはJavaScript環境固有の問題で、ここでは割とどうでもいいと思うが。
お前が正規表現として /(^|[@;])[^@;]*/g を書いたとき、全ての環境で無限ループするべきだ!と思っているのならそれでいいが、
実際はそうではないだろ?なら無駄にいちゃもんつけるなよ。
お前は実装と仕様の違いを理解出来てないタイプだな。
String.matchは「マッチ全部を配列で返す」メソッドだ。
当然、無限ループなんてしてはいけない。
(ただし無限ループしない為に空文字マッチだと一文字進めるパッチだから仕様バグになってるが)
RegExp.execは「gマッチを一つずつ実行し、ユーザーがそこで適宜処理を行う」為のメソッドだ。
当然、何もしなければ順に次のマッチをしていくのが正しく、今現在のように無限ループするようでは駄目だ。
結果、今はユーザーが本来不要なコードを毎回書く羽目になってる。
具体的に言えば、 if (match!=='') が毎回必要になる。これが無駄だ。
JavaScript界隈にはお前みたいな馬鹿が多い。
本来はどうあるべきか、或いは何故この無駄なコードが必要なのか分からず、
今の「実装」が正しいと思いこんでいるタイプだ。
動かさないと分からない、あるいは動いていればいい程度のコードしか書けないからだが。
とはいえ、今回のようなケースに遭遇するとそうなるのも分かる気はするが。
いずれにしても、これはJavaScript環境固有の問題で、ここでは割とどうでもいいと思うが。
お前が正規表現として /(^|[@;])[^@;]*/g を書いたとき、全ての環境で無限ループするべきだ!と思っているのならそれでいいが、
実際はそうではないだろ?なら無駄にいちゃもんつけるなよ。
871デフォルトの名無しさん
2019/07/14(日) 13:21:26.40ID:XILHsvHP >>866
"t" からマッチは誤りでした、申し訳ない..
タグの外側だけ対象に置換する
http://www.din.or.jp/~ohzaki/regex.htm#ReplaceOutside
この記事の動作のことを言いたかったんですがうろ覚えのまま
適当に書いてしまいました、ごめんなさい
"t" からマッチは誤りでした、申し訳ない..
タグの外側だけ対象に置換する
http://www.din.or.jp/~ohzaki/regex.htm#ReplaceOutside
この記事の動作のことを言いたかったんですがうろ覚えのまま
適当に書いてしまいました、ごめんなさい
872デフォルトの名無しさん
2019/07/14(日) 13:28:58.74ID:wR6d2dgQ >>868
PCREに統一中だという主張の根拠を聞いたんだがそれへの回答はないわけだ
PCREが素晴らしい実装で最初に触っとけばいいというのは同意するが, それが最良だなんてのはあり得ないし単なる妄想だよ
PCREに統一中だという主張の根拠を聞いたんだがそれへの回答はないわけだ
PCREが素晴らしい実装で最初に触っとけばいいというのは同意するが, それが最良だなんてのはあり得ないし単なる妄想だよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 高市「発言は撤回しない。謝罪もするな。外務省局長!任せたぞ。」👈なにをさせたかったの?😲 [826239858]
- 【実況】博衣こよりのえちえち歌枠🧪
- 外務省局長、よくわからないまま帰国へ [834922174]
- ぶっちゃけ普通の日本人は台湾とかどうでもよくて、野蛮な反日国中国が偉そうにするのがムカつく!という感情論だけだよね… [452836546]
- 自分に自信がない女の子、陽キャ美容室で80cmのエクステを付けた結果wwwwwwwwwwwwwwwwwww [329329848]
