JS

2016-09-22 11 views
1

私はこの正規表現の構文を持っているためにPHPとPythonで働く正規表現構文翻訳: "(?< = [-Z]) - (?= [-Z])"JS

をそれは2つの小文字の間にダッシュをキャプチャします。以下の例では、2番目のダッシュがキャプチャされます。

Krynica-Zdrój、ul Uzdro-jowa

残念ながら私は< = JSで使用できません。 私の究極の目標は、RegExを置き換えてハイフンを削除することです。

+0

私は、このハイフンを取り除くために置き換える使用したいです。 –

+0

/b- \ b/gについて、両方のハイフンを返します。 2番目のパターンについては、何も検出しないで変更することなく、それを動作させる方法がわかりません。 –

+0

はい、私は以下の解決策を提供しました。私の最初のコメントを削除させてください。 –

答えて

1

小文字の間でハイフンを削除する必要があるようです。

使用

var s = "Krynica-Zdrój, ul. Uzdro-jowa"; 
 
var res = s.replace(/([a-z])-(?=[a-z])/g, "$1"); 
 
console.log(res);

最初後読みは、単純なキャプチャグループになっている第二先読みがあるため使用することがOKであることに注意してください - 潜在的に、ハイフン単一小文字のチャンクがある場合 - 重複するマッチに対処することができます。

詳細

  • ([a-z]) - ハイフン
  • (?=[a-z]) - - 結果に追加されていない小文字のASCII文字で続いている小文字のASCII文字
  • -をキャプチャグループ1 - /g - グローバルモディファイア、パターンのすべての出現を検索する
  • "$1" - グループ1のバッファに格納されている値の逆参照のみを含む置換パターン。

VBAサンプルコード

Sub RemoveExtraHyphens() 
Dim s As String 
Dim reg As New regexp 

reg.pattern = "([a-z])-(?=[a-z])" 
reg.Global = True 

s = "Krynica-Zdroj, ul. Uzdro-jowa" 
Debug.Print reg.Replace(s, "$1") 
End Sub 

enter image description here

+0

私は/([a-z]) - (?= [a-z])/ gを試して、私の例では "o-"を返します。 –

+0

*あなたの*例はどこですか?シェアしてください。 * mine *を使用すると、うまく動作することがわかります。 –

+0

私の例はKrynica-Zdrój、ulです。 Uzdro-jowa、https://regex101.com/#javascriptで/([az]) - (?= [az])/ gをチェックしましたが、何か分かりませんので、 JS RegEx構文を使用するVBAで使用するパターンが必要です。 –