我需要有一个正则表达式的字符串: Created ID @DBDOYEF has problems
正则表达式模式匹配的Java
字@DBDOYEF
可能包含a-z,A-Z,0-9
和所有特殊字符,如
~!#$%^&*()_+{}:"<>?,./\.
请帮我创建一个模式这个词。我用
Created ID \\b[A-Z][0-9][\\//[email protected]#$%^~&*!():]+\\b has problems
为此,但它在许多情况下失败。
我需要有一个正则表达式的字符串: Created ID @DBDOYEF has problems
正则表达式模式匹配的Java
字@DBDOYEF
可能包含a-z,A-Z,0-9
和所有特殊字符,如
~!#$%^&*()_+{}:"<>?,./\.
请帮我创建一个模式这个词。我用
Created ID \\b[A-Z][0-9][\\//[email protected]#$%^~&*!():]+\\b has problems
为此,但它在许多情况下失败。
你的问题是
\b
只是一个“单词字符”(字母/数字/下划线)和非单词字符之间的匹配(或启动串/结束)。因此,您需要一种不同的方法来确定您的比赛已结束。由于您的标识符之前和之后已经有空格,因此您已经有了这样的方法并可以删除\b
。-
是一个字符类中的元字符,需要放在字符类的开始或结尾,因此它不会被解释为范围标记(如A-Z
)。@
开头,但不是[A-Z]
的一部分,因此无法匹配。您可能希望(可选)以@
开始比赛。这让你
Created ID @?[A-Z0-9][-A-Z0-9\\/[email protected]#$%^~&*!():]+ has problems
如果像-([email protected])
ID也有效,可以简化到
Created ID [-A-Z0-9\\/[email protected]#$%^~&*!():]+ has problems
它可能会或可能不会与@开始。其次是任何标点符号或A-Z或a-z或0-9
你试图[A-Z][0-9][\\//[email protected]#$%^~&*!():]+
,这需要信,随后位,:有时它开始。对所有允许的字符使用相同的character class。
正则表达式
Created ID [@A-Za-z0-9~!#$%^&*()_+\-{}:\"<>?,./]+
[@A-Za-z0-9~!#$%^&*()_+\-{}:\"<>?,./]+
匹配任何在character class的字符的任意时间。 !
请给你的一些测试用例... –
尝试'创建ID @ [A-ZA-Z0-9〜#$%^&*()_ + {}:\ “<>?,。/] +'[demo](https:// regex101。com/r/aL9xL1/1) – Mariano
它可能或可能不以@开头。某些时候它开始于:或A-Z或a-z或0-9。 – Megha