我有以下正则表达式:
(\\+)([\\w\\d]+)(=)(.+)
这应该允许:
+[字符][数字]=[全部]
第二部分(在“=”之后)不应允许存在空白字符,除非有数字或单词字符。
我似乎无法做到这一点。如何构建这样的 RegEx。
编辑:
以下是有效示例:
+Valid123=Valid123
+123Valid=Valid 123
+Valid=This is Valid 14
+Valid=(This is Valid)
我的问题是如何避免这种情况:
无效=空格
\w
代表“单词字符”,通常[A-Za-z0-9_]
你不需要\d
在你的类中添加。...不允许出现空白字符,除非有数字或单词字符。
尝试这种方式 ...= (\\s*\\w+)+
, ->\\s*\\w+
将只接受具有zero or more whitespaces at start
和1 or more characters at end
喜欢的字符串"a"
, " ab"
, " c"
. (\\s*\\w+)+
将使正则表达式接受 1 个或多个此类令牌。
以下正则表达式应该适合您:
^(\\+)(\\w+)(=)(\\s*\\S+\\s*)+$
试试这个:^\+[\w\d]+=(\S+.*)$
。
这与您的第一部分匹配,但关键在 . 之后的部分=
。它需要至少一个非空格后跟任何内容(允许在非空格的初始匹配后使用空格),因此+word123= testing
会在+word123=testing 123
通过的地方失败。如果第一个字符。之后=
是空格,是不允许的。如果第一个字符。不是空格,它应该在事后允许空格和其他任何东西。
如果您需要更改 之后的初始单词/数字/等之后的=
内容,您只需在 a 中插入一组更复杂的规则来()
代替.
in (\S+.*)
。
测试可以在这里看到。您可能需要稍微调整一下(转义 java 斜杠等)。