我正在尝试构建一个具有以下规则的正则表达式:
合法案件将是:
如果需要更多澄清,请告诉我,这很难解释。
我目前在正则表达式中有这个:
(\w+\.)*(\*|\w+)\=\w+
正确验证给定的示例,但它匹配“。* = INFO”,这应该是无效的。任何人都知道我怎么能让它不匹配这个字符串?
答案 0 :(得分:1)
为方便起见,我们将一个标记称为星号或任何非零长度的单词。因此,word
和*
是“令牌”
我们可以使用正则表达式将其描述为(\*|\w+)
。
现在,我们需要与以下内容匹配的正则表达式:
结果,我们有类似
的东西^(\*|\w+)(\.(\*|\w+))*=\w+$
是
^ (\*|\w+) (\.(\*|\w+))* =\w+$
begin token 0 or more (dot + token) equals, word and end
答案 1 :(得分:1)
^(\*|\w+(\.\w+)*(\.\*)?)\=\w+$
它分别处理以星号开头的情况和以字符开头的情况,因为我无法将它们组合起来。
^ begin
(
\* asterisk
| or
\w+ first word
(\.\w+)* optionally more words, separated by dot
(\.\*)? optional dot + asterisk
)
\= equals
\w+
$ end