我正在寻找一个允许单引号或双引号字符串的正则表达式,并允许字符串中的相反引号字符.例如,以下两者都是合法的字符串:"你好'那里'世界'"你好"那里"世界"
我正在使用的正则表达式使用负向前瞻,如下所示:
(['"])(?:(?!\1).)*\1
Run Code Online (Sandbox Code Playgroud)
我认为这会起作用,但如果语言不支持负面前瞻怎么办呢.有没有其他方法可以做到这一点?没有交替?
编辑:
我知道我可以使用轮换.这更像是一个假设的问题.假设我在初始角色类中有20个不同的角色.我不想写出20种不同的变化.我试图实际上否定捕获的角色,而不使用前瞻,后视或交替.
这实际上比你可能已经意识到的要简单得多.你真的不需要负面的预测.你想要做的是像这样的非贪婪(或懒惰)匹配:
(['"]).*?\1
Run Code Online (Sandbox Code Playgroud)
在?之后的字符.*是重要的组成部分.它说,在击中正则表达式的下一部分之前消耗尽可能少的字符.所以,你得到任何一种引用,然后你去追寻0-M字符,直到你遇到一个匹配你最初遇到的引用的字符.您可以在此处和此处了解有关贪婪匹配与非贪婪的更多信息.