我有這樣的正則表達式語法: 「 - (= [A-Z])(< = [A-Z])」平移正則表達式語法在PHP和Python努力JS
它捕獲2個小寫字母之間的破折號。在下面的示例中,第二個短劃線被捕獲:
Krynica-Zdrój,ul。 Uzdro-jowa
不幸的是,我不能在JS中使用< =。 我的最終目標是使用RegEx替換刪除連字符。
我有這樣的正則表達式語法: 「 - (= [A-Z])(< = [A-Z])」平移正則表達式語法在PHP和Python努力JS
它捕獲2個小寫字母之間的破折號。在下面的示例中,第二個短劃線被捕獲:
Krynica-Zdrój,ul。 Uzdro-jowa
不幸的是,我不能在JS中使用< =。 我的最終目標是使用RegEx替換刪除連字符。
在我看來,你需要刪除小寫字母之間的連字符。
使用
var s = "Krynica-Zdrój, ul. Uzdro-jowa";
var res = s.replace(/([a-z])-(?=[a-z])/g, "$1");
console.log(res);
注意第一回顧後變成一個簡單的捕獲組和第二先行是OK,因爲使用 - 潛在的,如果也有複姓單小寫字母塊 - 它將能夠處理重疊的比賽。
詳細:
([a-z])
- 第1組拍攝小寫ASCII字母-
- 一個連字符(?=[a-z])
- 後跟與不添加到結果的小寫ASCII字母 - /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
我試過/([a-z]) - (?= [a-z])/ g,在我的例子中它返回「o-」。 –
*你的*例子在哪裏?請分享。如果你使用* mine *,你會發現它運行良好。 –
我的例子是Krynica-Zdrój,ul。 Uzdro-jowa,我在https://regex101.com/#javascript上檢查了/([az]) - (?= [az])/ g,我也許不明白,所以我會解釋一下我需要在使用JS RegEx語法的VBA中使用的模式。 –
我想用替代擺脫這種連字符。 –
關於/ \ b- \ b/g,它會返回連字符。關於第二種模式,我不知道如何讓它發揮作用,沒有改變就沒有檢測到任何東西。 –
是的,我在下面提供了一個解決方案。讓我刪除我的第一條評論。 –