我需要匹配任何具有某些特征的字符串,但我认为启用/m
标志会破坏功能。
我所知道的:
我的问题是,如果我在单个文本块中有两次字符串,它会返回一次,匹配第一个引号和最后一个引号之间的所有内容以及中间所需的单词。
这是我的正则表达式:
/^"the[^@]*fox[^@]*lazy[^@]*"$/gim
以下是我对该陈述的理解。匹配字符串以"the
开头的位置,并且在字符串以fox
结尾之前的某个位置存在单词lazy
和"
(按此顺序)。同时忽略换行符和区分大小写。
限制的最常见答案是(.*?)
但它不适用于新行。放置[^@?]*
不起作用,因为它将?
添加到要忽略的事物列表中。
那么我怎样才能保持“匹配所有内容直到___”从跳过到最后一个实例,同时仍能忽略换行符?
这不是我能找到的任何其他内容的重复,因为这涉及多行匹配,而那些则没有。
答案 0 :(得分:1)
在输入这个问题时得出的答案可能看起来非常明显。
将?
放在*
之后,而不是括号内。括号和括号不相似,?
应该与*
相对。
更正了正则表达式:
/^"the[^@]*?fox[^@]*?lazy[^@]*?"$/gim
长期和短期是:
[^@]*?
(用@
代替你不想匹配的东西)
答案 1 :(得分:1)