0

次の文字列があります。

"bar foo test-line drop-line"

何かで始まり「-line」で終わる単語を置き換える必要があります。

基本的に持っている:

"bar foo new_word new_word"

私は試した:

string.replace(/\.-line$/g,'new_word')

しかし、うまくいきません。

4

3 に答える 3

4

これを正規表現として試してください:

/\S+-line(?![-\w])/

/\S+-line\b/ダッシュは単語の一部と見なされず、誤って と一致するため、アンカーという単語はここでは適していませんtext-with-line-not-to-be-replaced。したがって、先読み構造。

もちろん、ユースケース\Sによっては、少し粗く見えるかもしれません。あなたの単語が実際に文字とダッシュなどだけで構成されている場合は、次のnormal* (special normal*)*パターンを使用できます。

/[a-z]+(-[a-z]+)*-line(?![-\w])/i

(ノーマル:[a-z]、スペシャル:-

(編集: @thg435 のおかげで、先読み構造を変更しました)

于 2013-06-11T09:59:54.740 に答える
0

どうですか

string.replace(/\b\S+-line\b/g,'new_word')

\b単語境界

\S非空白

fgeが鋭く指摘しているように、終了などをキャッチしないように\bアフターが必要です。linelines liner

于 2013-06-11T10:07:32.497 に答える
0

正規表現では、\b を使用して新しい単語の始まりを検出し、\w を「単語文字」に使用できます。

"your string".replace(/\b\w+-line\b/g,'new_word')

http://www.w3schools.com/jsref/jsref_obj_regexp.aspを参照してください。

于 2013-06-11T10:03:51.173 に答える