我有这个RegEx语法:“(?< = [a-z]) - (?= [a-z])”
它捕获2个小写字母之间的短划线。在下面的示例中,捕获了第二个破折号:
Krynica-Zdrój,ul。 Uzdro-jowa
不幸的是我不能在JS中使用< =。 我的最终目标是使用RegEx替换删除连字符。
答案 0 :(得分:1)
在我看来,你需要删除小写字母之间的连字符。
使用
var s = "Krynica-Zdrój, ul. Uzdro-jowa";
var res = s.replace(/([a-z])-(?=[a-z])/g, "$1");
console.log(res);

请注意,第一个lookbehind变成了一个简单的捕获组,第二个前瞻可以使用,因为 - 如果有大量带连字符的单个小写字母,它将能够处理重叠匹配。
详细:
([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