如何解决正则表达式匹配后跟另一个单词的字符串
| 因此,我试图编写一个正则表达式,该表达式将与定义的字符串匹配,然后与另一个单词匹配。例如,在字符串“ 0”中,我要匹配“ 1”。似乎应该很简单,但我一直无法弄清楚。 本质上,我不在乎ORDER BY和LIMIT之间是什么,但我想在LIMIT处停止匹配。这是我到目前为止的内容:string pattern = @\"\\s*ORDER\\s*BY.*LIMIT\";
但这最终与整个SELECT语句匹配,我想在LIMIT处停止。
提前致谢!
解决方法
请尝试以下修改的模式:
string pattern = @\"\\s*ORDER\\s*BY.+?LIMIT\";
使用ѭ4match很可能是罪魁祸首。要使其不贪心,请在其上加上?
,使其.*?
。就个人而言,如果我希望以后至少匹配一个字符,我更喜欢使用.+?
。对于\\s*
,您将不必使其变得非贪婪,但也许希望使用\\s+
来确保至少存在一个空白字符。实际上,您可能想使用\\b
来匹配单词边界,而不是根据空白进行思考,这将使模式变为:
string pattern = @\"\\bORDER\\s+BY\\b.+?\\bLIMIT\\b\";
换句话说,匹配单词“ ORDER”的开头,后跟至少一个空格字符,匹配“ BY”和一个单词边界(单词的末尾),然后至少匹配一次任何字符,非-贪心,直到找到完整的单词“ LIMIT”。知道您的数据很重要,您可能可以摆脱第一个模式。单词边界有助于避免部分匹配并确保完全单词匹配。例如,请参阅此相关问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。