在UltraEdit中,我启用了UNIX风格的正则表达式,但查找.*
不起作用;只有.+
会找到一些东西。
为什么,以及如何使其发挥作用?
我应该补充说我正在使用UltraEdit 11.10b。是否有已知的错误或什么?
答案 0 :(得分:1)
.
匹配除回车和换行之外的任何字符。
*
匹配前面的表达式 0 或更多次,但非贪婪。
非贪婪意味着尽可能少的字符来获得表达式的正面结果。
表达式.*
仅在两个固定字符串之间有意义。你不能只使用.*
,因为没有匹配也是这个表达式的正匹配。除行终止符之外的任何字符都是零,这对于此表达式的正结果是足够的,因此仅使用.*
始终不匹配。或者换句话说:找不到正则表达式.*
的正面结果。
word.*
和.*word
也没有用,因为只有word
找到了这些表达式,或者你得到了不可预测的结果。
在搜索字符串中使用.*
或.+
时,查找引擎始终需要前后固定字符串,或者需要^
或$
之类的非匹配锚点从哪里开始选择除
顺便说一句:UE v11.10b的Unix正则表达式引擎只是与Perl正则表达式语法一起使用的UltraEdit正则表达式引擎。这也解释了为什么Unix正则表达式引擎仅支持UltraEdit正则表达式引擎支持的内容,只是使用一组不同的特殊字符。您应该考虑将UltraEdit升级到当前版本21.10,其中包含最新版本的真正Perl正则表达式引擎,其中包含此正则表达式引擎的所有强大功能。