regex - 正则表达式匹配一个非常具体的模式
问题描述
我一直在尝试创建一个可以接受由 | 分隔的任何值(SPAM、FOO、BAR)的正则表达式。或无。我一直在研究的正则表达式可以完成这项工作,但是当在这些值之前输入一个值时会出现问题(有关更多详细信息,请参见下图)。有什么建议么?谢谢!
^NONE$|^(?!. NONE)(?:. (FOO|BAR|SPAM))*
这就是我目前正在使用的。
应该通过的字符串:
//应该通过
FOO|酒吧|垃圾邮件
食品
垃圾邮件|酒吧
垃圾邮件|FOO
垃圾邮件|FOO|酒吧
酒吧|餐饮
没有任何
//应该失败
无|FO
FOO|垃圾邮件|无
FOO|NONE|BAR FOO|TEST
FOO_TEST
测试
FOO|测试|酒吧
FOO_TEST|酒吧
测试|FO
测试|食品|酒吧
测试 FOO|BAR
TEST_FOO|酒吧
*TEST 被用作不在组中的单词
解决方案
这应该有效:^NONE$|^(FOO|BAR|SPAM)([|](FOO|BAR|SPAM))*$
推荐阅读
- c - 尽管逻辑多次正确检查,但给出错误的一些值
- pandas - 如何使用布尔输出处理预测
- javascript - 如何修复此 Javascript 程序中的移动错误,使其在我同时按下两个键时不会中断?
- ios - SwiftUI 性能问题,iOS 14.2 中的 UI 滞后
- python - 如何访问熊猫多索引数据框中的特定行
- java - 如何使用 java regex 删除 MS Word 不必要的 html 标签
- java - Java 泛型 - 使用泛型接口及其实现的最佳方式
- python - 需要 Python 3.7 中的 Mysql 查询以从具有列 (table_no, is_new) 的表中选择记录
- python - QSortFilterProxyModel 隐藏 QWidget
- c++ - 模板成员函数无法自动推断类型