正则表达式 - 排除字符串中的单词
Regex - exclude word within string
我想匹配此字符串中除“eps1@”之外的所有内容:
HelpMe_pleas3_eps1@
我试过 [^eps1@]
但这匹配了除了“e”“p”“s”“1”“@”的每个实例之外的所有内容。我只想排除“eps1@”。
有很多方法可以实现,具体取决于您的实际需要。
使用 (.*)eps1@
匹配第一个捕获组中“eps1@”之前的所有内容。参见 demo #1。
使用 (.*)eps1@(.*)
匹配第一和第二捕获组中“eps1@”前后的所有内容。参见 demo #2。
如果“eps1@”出现多次,您可以使用这个正则表达式:
(?:[^eps1@]|e(?!ps1@)|(?<!e)p(?!s1@)|(?<!ep)s(?!1@)|(?<!eps)1(?!@)|(?<!eps1)@)+
这意味着:
[^eps1@]
除“e”、“p”、“s”、“1”和“@”之外的任何字符;或者
e(?!ps1@)
字符“e”,如果后面没有跟“ps1@”;或者
(?<!e)p(?!s1@)
如果前面没有“e”且后面没有“s1@”,则字符“p”;或者
- 等等。
见demo #3。
但是您是否考虑过将“eps1@”替换为源字符串中的“”?
P.S。对于接下来的问题,我建议您更准确地了解您使用的语言。
我想匹配此字符串中除“eps1@”之外的所有内容:
HelpMe_pleas3_eps1@
我试过 [^eps1@]
但这匹配了除了“e”“p”“s”“1”“@”的每个实例之外的所有内容。我只想排除“eps1@”。
有很多方法可以实现,具体取决于您的实际需要。
使用 (.*)eps1@
匹配第一个捕获组中“eps1@”之前的所有内容。参见 demo #1。
使用 (.*)eps1@(.*)
匹配第一和第二捕获组中“eps1@”前后的所有内容。参见 demo #2。
如果“eps1@”出现多次,您可以使用这个正则表达式:
(?:[^eps1@]|e(?!ps1@)|(?<!e)p(?!s1@)|(?<!ep)s(?!1@)|(?<!eps)1(?!@)|(?<!eps1)@)+
这意味着:
[^eps1@]
除“e”、“p”、“s”、“1”和“@”之外的任何字符;或者e(?!ps1@)
字符“e”,如果后面没有跟“ps1@”;或者(?<!e)p(?!s1@)
如果前面没有“e”且后面没有“s1@”,则字符“p”;或者- 等等。
见demo #3。
但是您是否考虑过将“eps1@”替换为源字符串中的“”?
P.S。对于接下来的问题,我建议您更准确地了解您使用的语言。