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