我想搜索以下字符串:
cast('"
+ object.method()
+ "' as datetime
上面的代码块可以只有一行或两行所以下面的表达式:
cast('" + object.method()+"' as datetime
或
cast('"
+ object.method()+ "' as datetime
也是很好的比赛。
所以我用下面的表达式作为正则表达式:
(?s)(?i)cast.*?datetime
但我要匹配的字符串不应超过 3行
如何在正则表达式中表达这种情况?
提前谢谢。
答案 0 :(得分:2)
正则表达式怎么样
cast([^\n]+\n){0,2}.*datetime
示例:http://regex101.com/r/hQ9xT1/1
[^\n]+\n
匹配\n
后跟\n
{0,2}
量词量化表达式最大值 2次,即匹配2行
.*
在最后一行匹配anthing
datetime
匹配datetime
答案 1 :(得分:2)
cast[^\n]+\n[^\n]+\n[^\n]*datetime
试试这个。看看演示。
http://regex101.com/r/hQ9xT1/2
编辑:
使用
cast([^\n]+\n){0,2}[^\n]*datetime
如果您想将1
与3
行匹配。
答案 2 :(得分:1)
cast(.+([\n])?){1,3}datetime
匹配cast
一次*
匹配任意一组字符(分钟为1),后跟0或1个新行(.+([\n])?)
至少匹配上述群组一次,但不超过{1,3}
匹配单词datetime
一次*
*虽然我已经指出“匹配一次”我的意思是关于模式的文字匹配,如果您使用全局修饰符,则此表达式将允许您的文本中的上述搜索模式的多个匹配。