不太确定如何解决这个问题,但基本上我要做的就是匹配一个角色,例如a
。在这种情况下,以下所有内容都不会包含匹配项(即我不想匹配它们):
aa
aaa
fooaaxyz
以下是:
a
(显然)fooaxyz
(这只会与字母匹配)我对RegEx的了解不是很好,所以我甚至不确定这是否可行。基本上我想要做的就是匹配任何单个a
周围有任何其他非a
字符(除了字符串的开头和结尾)。
答案 0 :(得分:3)
基本上我想做的是匹配任何一个周围没有任何其他非字符的字符(除了字符串的开头和结尾)。
^[^\sa]*\Ka(?=[^\sa]*$)
\K
会丢弃先前匹配的字符,并且先行断言是否可以匹配匹配。所以上面只匹配满足条件的字母a
。
或强>
a{2,}(*SKIP)(*F)|a
答案 1 :(得分:1)
你需要两件事:
[^a]
(除了" a"所有 ^
和$
)以确保达到字符串的限制(换句话说,模式匹配整个字符串而不仅仅是子字符串):结果:
^[^a]*a[^a]*$
一旦您知道只有一个" a",您可以根据您使用的语言使用您想要的方式来提取/替换/删除它。
答案 2 :(得分:1)
您可以结合使用先行查找和先行查找
:(?<!a)a(?!a)
请参见regex demo和正则表达式图:
详细信息
(?<!a)
-如果在当前位置的左侧紧邻有a
字符a
-一个a
字符(?!a)
-如果在当前位置的右侧紧邻有一个a
字符,则负匹配将使匹配失败。