0

差し替えをしようと思っています。次の文字列を検討してください。

Please replace something in this sentence.
and replace <b>something&nbsp;</b> in this sentence.
But not here http://www.mysite.com/something/mypage.html
Or here \\myserver\something\myshare\

に置き換えたいのですが、ソースの URL または UNC に表示される可能somethingsomethingelsesomethingあり、それを置き換えたくありません。また、いくつかの面白い HTML が進行中です。

これは私が使用しているパターンです:

\b[^/\\]Something[^/\\]\b

これはうまくいきますが、最初のsomething後ろのスペースも取得しています。に置き換えるsomethingsomethingelse、次の結果が得られます。

Please replacesomethingelsein this sentence.
and replace <b>somethingelse&nbsp;</b> in this sentence.
But not here http://www.mysite.com/something/mypage.html
Or here \\myserver\something\myshare\

2 番目のインスタンスは機能しますが、スペースを含む最初のインスタンスは機能しません。

周囲のスペースの有無を無視するにはどうすればよいsomethingですか? ありがとうございました。

4

2 に答える 2

2

やりたいことは、後読みと先読みを使用することなので、正規表現は次のようになります \b(?<!/\\)something(?=[^/\\])\b

正規表現にを含めているため[^/\\]、実際には「何か」の前の文字と一致しています。これにより、不要であると述べた応答にそれが含まれます。何かが存在するか存在しないか (前方または後方) を確認したいが、検証した部分と実際には一致しない場合は、先読みと後読みを使用してその検証を処理できます。先読みと後読みの詳細については、こちらを参考にしてください。

あなたが提供したあなたの例で私がここで行ったテストを見ることができます。.

編集: VBScriptでは後読みはサポートされていませんが、先読みは完全にサポートされているようです。正規表現は前後に検証を使用しているため (これは冗長です)、肯定的な先読み (概説した NOT 条件をチェックする) のみを使用して引き続き機能するはずです\bsomething(?=[^\/\\])\b

于 2013-04-24T14:05:27.260 に答える