[英]How can I call a function using regular expressions for string replacement?
[英]How can I match occurrences of string not in another string using regular expressions?
我正在尝试按照以下顺序匹配“字符串”的所有出现, 但 @@内部的除外
as87dio u8u u7o @string@ ou os8 string os u
即第二次出现应匹配,但第一次不匹配
谁能给我解决方案?
你可以试试:
(?:[^@])string(?:[^@])
好,
如果不想与某个字符匹配,可以将其放在字符类(方括号)中,并以^字符将其取反,例如[^a]
表示除小写字母'a'以外的任何字符。
因此,如果您想要“非标志”,然后是字符串,然后是另一个“非标志”,则需要
[^@]string[^@]
现在,问题在于字符类将各自匹配一个字符,因此在您的示例中,我们将获得“ string”,其中包括前导和尾随空格。 因此,还有另一种结构告诉您什么都不匹配,并且在开始时用?进行了限制。 (?: )
因此,您将其围绕在两端。
(?:[^@])string(?:[^@])
可以,但是现在它在字符串的开头(令人困惑的是, ^
字符在字符类之外执行双重任务)或在字符串$
的末尾不匹配。 所以我们必须使用OR字符|
说“给我一个字符串的非符号或结尾”,最后说“给我一个字符串的非符号或结尾”,如下所示:
(?:[^@]|^)string(?:[^@]|$)
编辑:负向后和前向超前是一种更简单(且更聪明)的解决方案,但不适用于所有正则表达式引擎。
现在是一个后续问题。 如果您有“涩味”一词,您是否仍要匹配其中的“字符串”? 换句话说,“字符串”是否必须本身就是一个词? (尽管我最初的反应是,这可能变得相当复杂:))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.