特定の単語を取得しようとしていますが、文字列 '、'が先行しているとは限りません。試しました文字列の前にカンマとスペースではない正規表現
((?!\,\s))(word)
しかし、それは動作しません。私はそれが単語「単語」と一致することを期待していました。私は間違って何をしていますか?
特定の単語を取得しようとしていますが、文字列 '、'が先行しているとは限りません。試しました文字列の前にカンマとスペースではない正規表現
((?!\,\s))(word)
しかし、それは動作しません。私はそれが単語「単語」と一致することを期待していました。私は間違って何をしていますか?
先に負の表記をコード化しました。の背後にある負の表情をお試しください:
(?<!,\s)word
はまた、あなたがコード化されたブラケットのほとんどを必要としないことに注意してください。
私は答えがlookbehindアサーションであることに同意します。
違いはどこに置くかです。
アサーションで始まる正規表現は、遅くなります。
アサーションを挿入ポイントに最適化できないためです。
そのため、大きく見えるかもしれませんが、性能に違いがあります
5から20回。
サンプル
word asdfasdf afsdbbasbfasfb
adbbadfb, afdsbafbdsasfb adb, , , ,
word, word word, word
ベンチマーク
Regex1: (?<!,\s)word
Options: <none>
Completed iterations: 50/50 (x 1000)
Matches found per iteration: 3
Elapsed Time: 0.70 s, 703.28 ms, 703277 µs
Regex2: word(?<!,\sword)
Options: <none>
Completed iterations: 50/50 (x 1000)
Matches found per iteration: 3
Elapsed Time: 0.17 s, 170.21 ms, 170207 µs
あなたは後読みが先読みする必要はありません。正規表現の味は何ですか? – anubhava
xsltでそれをやっていると助けてくれます。 – villeroy
あなたの掲示されたテキストは ''、' 'です。それはスペースでカンマになります。 – sln