可以安全地从正则表达式模式中删除前导或尾随。*

时间:2016-01-20 21:56:43

标签: regex

回答是否可以在字符串中找到模式的问题。 (truefalse仅回答。在哪里或多少不是问题。)

假设正则表达式模式不包含所有格重复,从模式字符串中删除尾随或前导.*.*?是否总是安全的?例如,find('.*blah.*', x)保证返回与find('blah', y)相同的结果。

如果第一个问题的答案是“否”,那么在正则表达式模式中是否只允许re2中的语法会怎样?

1 个答案:

答案 0 :(得分:1)

阅读RE2 docs

  

任何字符,可能包括换行符(s = true) .

然后

  

s.\n匹配(默认 false

因此,.*匹配除换行符之外的零个或多个字符。

如果没有/s修饰符,则前导.*会在blah的同一行上找到除换行符之外的零个或多个字符,直到最后blah。使用/s,它将找到从字符串开头到字符串中最后一个blah的所有子字符串。当您省略前导.*时,正则表达式引擎将尝试匹配字符串中的第一个blah

如果 find 未锚定模式,则可以安全地在两端省略它,find('.*blah.*', x)将产生相同的< strong> 布尔 结果为find('blah', y)。否则,它不会。 字符串 结果可能会有所不同。