Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式问题-匹配单个字母。排除连续字母_Regex - Fatal编程技术网

Regex 正则表达式问题-匹配单个字母。排除连续字母

Regex 正则表达式问题-匹配单个字母。排除连续字母,regex,Regex,我在创建一个正则表达式时遇到了一个问题,它将提供我想要的东西。我需要你的帮助!因此,我们使用的文本是: S 1SS 1S “S”和“1S”是匹配项。“1SS”不是匹配项。我希望它比仅仅排除任何带有三个字符的内容更具体一点,但这可能是一个解决方案 关于如何排除“1”还有其他想法吗?我搞不懂 谢谢, 标记S。您可以使用负先行模式来避免匹配连续字母S: \b\d*S(?!S) 演示: 解释:\b匹配一个单词边界,以确保它不会与两个连续的S中的第二个S匹配\d*匹配零位或

我在创建一个正则表达式时遇到了一个问题,它将提供我想要的东西。我需要你的帮助!因此,我们使用的文本是:

S      1SS          1S
“S”和“1S”是匹配项。“1SS”不是匹配项。我希望它比仅仅排除任何带有三个字符的内容更具体一点,但这可能是一个解决方案

关于如何排除“1”还有其他想法吗?我搞不懂

谢谢,


标记S。

您可以使用负先行模式来避免匹配连续字母
S

\b\d*S(?!S)
演示:


解释:
\b
匹配一个单词边界,以确保它不会与两个连续的
S
中的第二个
S
匹配<代码>\d*匹配零位或多位数字以允许前面的可选数字
S
后面紧跟着
(?!S)
,这是一种消极的前瞻模式,可以确保
S
后面的不是另一个
S
,具有更一般应用程序的regexp类似于:

\b(?:(.)(?!\1))+\b
  • \b代表单词边界
  • 列表项
  • (?:)是非捕获组
  • (?:)是一个负前瞻组
  • \1是团体参考

您有什么办法可以详细说明这个正则表达式正在做什么吗?很高兴能为您提供帮助。我已经用解释更新了我的答案。另外,由于您现在提到您只尝试匹配字母
S
,因此不再需要捕获组和反向引用,我已经相应地更新了正则表达式。如果您认为答案正确,请将其标记为已接受。谢谢,太好了,就是这个。我本来想说数字可能不是“1”,但你在更新的答案中提到了这一点。非常感谢。