c# - 正则表达式|如果字符串包含某些单词,则忽略字符串的第二个单词
问题描述
/((?:(?:is|will) (?!is))[^<?]+)/i
测试语句:
- 文字可以在前面,威尔是个好人吗?
- 同样在这里。你能帮助我吗?
我不希望它与第一句话匹配,我希望它与第二句话匹配。(它确实如此)
我正在尝试学习如果“is|will”之后的单词是“is”,我如何将整个正则表达式返回为假,但它会一直匹配并最终在第一个示例中找到匹配项。我对正则表达式有点陌生,因此感谢所有帮助。
这是比赛的样子:
提前致谢
解决方案
您的表达式看起来不错,但您需要锚定它,以便它从文本的开头开始匹配。您可以^
在正则表达式的开头使用。
/^((?:(?:is|will) (?!is))[^<?]+)/i
如果没有锚,正则表达式引擎会尝试在字符串中的任何位置找到匹配项。在第一个句子的情况下,它可以匹配这个词is
作为表达式中的第一个词,然后匹配表达式的其余部分。
推荐阅读
- objective-c - NSEvent addLocalMonitorForEventsMatchingMask 内存泄漏
- python - PyQT:在 QListWidgetItem 中获取内容 CustFormWidgetIem
- reactjs - React 路由器将在推送到 anot 后挂载组件
- sql - My SQL - 多表组上的 COUNT 字段按其他字段
- css - 打印时限制页数
- ruby-on-rails - 来自 API 的聚合用户数据的 JSON 有效负载结构
- javascript - 递归比较对象并将重复的键值放入数组
- python - Python中类似Javascript的数组方法链接?
- maven - 为什么只能在 Maven 插件依赖项中指定
并不是 ? - ios - 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效参数不满足:indexPath!= nil”