1\d2\D2 -> 1
^ 1 means a literal number 1
1\d2\D2 -> 17
^^ \d means any digit (0-9). let's choose 7.
1\d2\D2 -> 172
^ 2 means a literal number 2.
1\d2\D2 -> 172X
^^ \D means anything *but* a digit (0-9). let's choose X
1\d2\D2 -> 172X2
^ 2 means a literal number 2.
您可以通过读取表达式并逐步选择适当的字符来生成示例字符串。在
例如,1\d2\d2:
因此
172X2
将与1\d2\D2
匹配下一个-
^{pr2}$^a\w+z$
-可以有多个长度:因此
a4Q1z
将与^a\w+z$
匹配。a4z
(您可以检查…)注意,
*
与+
相似,因为你可以跳回并重复,但是也可以这意味着你可以完全跳过左边的内容(换句话说,+
表示“至少重复一次”,但是*
表示“重复零或更多”(零是跳过)。在更新:
[abc]
表示选择a
、b
或{x{2,3}
表示加x
2到3次(类似于+
,但有次数限制)。所以,xx
或{\1
有点复杂。你需要找出第一组圆括号内的内容(因为数字是1)并加上它。因此,例如,(\d+)\1
将匹配2323
,如果您从左到右,并为(\d+)
选择{要生成一些匹配的示例,可能需要解析regex并将regex的每个块发送到您要编写的函数中,如
getRandomSatisfyingText
。多次调用它,直到得到3个唯一的字符串。直到你开始支持原子断言(lookaheads and behind),这可能不会太难。在相关问题 更多 >
编程相关推荐