我有一个非常复杂的正则表达式,我终于设法在JS中工作
^\s*((\(\s*([^]+\"|[@#a-zA-Z0-9_-åäöøæüßÅÄÖØÆÜ\-]+){1}(\s{1,}OR\s{1,}(\"[^\"]+\"|[@#a-zA-Z0-9_-åäöøæüßÅÄÖØÆÜ\-]+))*\s*\)))((\s{1,}(AND|NEAR(\/(100|[0-9][0-9]?)(?=\s))?)\s{1,})(\(\s*(\"[^\"]+\"|[@#a-zA-Z0-9_-åäöøæüßÅÄÖØÆÜ\-]+){1}(\s{1,}OR\s{1,}(\"[^\"]+\"|[@#a-zA-Z0-9_-åäöøæüßÅÄÖØÆÜ\-]+))*\s*\)))?(\s{1,}(AND\s{1,}NOT)\s{1,}(\(\s*(\"[^\"]+\"|[@#a-zA-Z0-9_-åäöøæüßÅÄÖØÆÜ\-]+){1}(\s{1,}OR\s{1,}(\"[^\"]+\"|[@#a-zA-Z0-9_-åäöøæüßÅÄÖØÆÜ\-]+))*\s*\)))?(?=(\s*\))?(\;)?\s*$)
文字:(标题:“ asdasd”)
但是,当我将文本发送到C#后端并使用相同的正则表达式时,它将失败。
我有什么地方可以找到为什么它会失败吗?我尝试了一些不同的在线工具,但没有一个可以解释为什么它不起作用。
我只需要指出正确的方向,因为我是使用regex的新手。谢谢!
最佳答案
问题是您在表达式中使用的[^]
。在JS语法中,它匹配包括换行符在内的任何字符。在.net语法中,这不是有效的正则表达式令牌。
您应该都可以使用[\s\S]
作为替代,匹配包括换行符在内的任何字符。