【发布时间】:2021-08-14 20:30:15
【问题描述】:
在正则表达式方面我并没有那么令人印象深刻......
我试图匹配一个单词中除了第二个字符之外的所有字符。
我想匹配 '&' 和 'uml' 但不是字符串中的第二个字符。
示例字符串:
ä &zuml ö ë
我想出了以下两个正则表达式。
这个匹配“uml”除了第一个字符(&):
(?=.)uml --> https://regex101.com/r/yrhzSU/1
这匹配除最后 3 个 (uml) 之外的第一个字符
&(?=.) --> https://regex101.com/r/LgRtd3/1
您认为将这些组合起来很容易,但我正在努力寻找任何类型的 AND 运算符。我可以使用 OR (|) 运算符,但它也可以匹配不严格以 '&' 开头并以 'uml' 结尾的字符串。
&(?=.)uml
使用 OR 组合链接到正则表达式:https://regex101.com/r/MuhxM9/1
【问题讨论】:
-
你可以做的是使用 2 个捕获组而不是
(&)[aeoz](uml)regex101.com/r/tIXxHk/1 -
嗨@Thefourthbird,我相信这个表达式也会匹配第二个字符。我正在尝试匹配第一个字符 (&) 和字符 3,4 和 5。不过,您可能让我朝着正确的方向前进,我会尝试使用它。谢谢!
-
它确实匹配第二个字符,但你不能在这样匹配时真正跳过一个字符。这样你就有了 2 个捕获组。
-
您将如何处理捕获的数据?如果您只是输出它并且保证
&,则在输出时手动添加&前缀。如果&可以是$之类的其他名称,那么您需要使用捕获组并将组 1 连接到组 2,每个 @Thefourthbird 的示例。 -
嗨@MonkeyZeus,我的目标是使用-replace 来删除这些匹配的字符,例如我想将“&aum”变成“a”
标签: regex