我怎样才能防止我正在寻找的单词重复,无论它们的顺序如何
本文关键字:顺序 单词重 寻找 | 更新日期: 2023-09-27 18:33:17
我花了大约一个小时试图制作一个更好的正则表达式,但这不是我的一杯茶......我需要一个正则表达式来执行以下操作(如果需要,可以提供更多信息):
Spd_Engine #Ok
speedengine #Ok
enginespd #Ok
Engine_speed #Ok
aps_speed_engine #Ok
engine_speed #Ok
engine_trq #Not Ok
speed_rpm #Not Ok
正则表达式应该匹配至少包含(引擎&&(速度||spd))的每行
所以我想出了这个:
[e,E]ngine[_]?[s,S]p[e]*d|[a-zA-Z]*[_]*[s,S]p[e]*d[_]?[e,E]ngine
但我觉得可以改进。如何简化它?
您可以使用展望来简化正则表达式,例如
^(?=.*spe*d)(?=.*engine).*
^
将正则表达式锚定在字符串的开头(?=.*spe*d)
积极的展望。检查字符串是否包含spe*d
(?=.*engine)
另一个积极的展望未来。检查字符串是否包含engine
.*
匹配整个字符串
正则表达式示例
或
^(?=.*spe*d).*engine.*
放下第二眼前瞻
正则表达式示例
关于[e,E]ngine[_]?[s,S]p[e]*d|[a-zA-Z]*[_]*[s,S]p[e]*d[_]?[e,E]ngine
的注意事项
[e,E]
字符类内的逗号并不意味着逗号e
E
。您可以将其修改为[eE]
[_]?
在字符类中添加单个字符没有优势。它像旋转的_?
一样简单i
标志 i 可用于在匹配正则表达式时忽略案例
因此,
如果这个正则表达式的较短版本算作简化,那么这就是我想到的
[e,E]ngine_?[s,S]ped|[a-zA-Z]_[s,S]ped_?[e,E]ngine
与
[e,e]ngine[]?[s,S]p[e]*d|[a-zA-Z]*[]*[s,S]p[e]*d[_]?[e,E]ngine