我想在(this is)?.??.??(an)?.??.??(example sentence)
正则表达式中的每个组之间允许任何0到2个字符。它应该匹配以下字符串中的粗体文本:
等等等等等等。一个例句
等等等等。 这是一个例句
某事例句
现在,在第一个示例中,匹配为ah. example sentence
。我想在#34;中添加2个问号。"意味着正则表达式引擎更愿意匹配0个字符。
我在MS Word中使用VBA中的正则表达式,由CreateObject("vbscript.regexp")
实现,据我所知它使用VBScript正则表达式,据我所知它与JavaScript的味道相同。
答案 0 :(得分:3)
搜索
0020002101
应该2.??.??.??101
不是2101
还是20002101
?
正则表达不能"更喜欢"任何东西。它从左到右匹配。找到2
后(第一个2
),它会开始匹配后续的子模式,当找到匹配项时,会返回它。
在您的情况下,您需要使用可选组内的.{0,2}
,
(this is.{0,2})?(an.{0,2})?(example sentence)
^^^^^^ ^^^^^^
请参阅regex demo。
如果可选字符串的顺序很重要,请将它们嵌套:
(this is.{0,2}(an.{0,2})?)?(example sentence)
见another regex demo。只有在an
之前找到0到2个字符的this is
时,此正则表达式才会将public class ImageColor {
public void Imager(MainActivity activity) {
activity.ColorChange();
}
}
与0到2个字符匹配。