繁体   English   中英

正则表达式模式匹配java

[英]Regular expression Pattern matching java

我需要有一个字符串的正则表达式: Created ID @DBDOYEF has problems

单词@DBDOYEF可能包含az,AZ,0-9和所有特殊字符,如

~!#$%^&*()_+{}:"<>?,./\.

请帮我为这个词创建一个模式。 我用了

Created ID \\b[A-Z][0-9][\\//+-@#$%^~&*!():]+\\b has problems

为此,但它在许多情况下都失败了。

你的问题是

  • \\b仅匹配“单词字符”(字母/数字/下划线)和非单词字符(或字符串的开头/结尾)。 因此,您需要一种不同的方法来确定您的比赛已经结束。 由于您的标识符前后已经有空格,因此您已经有了这样的方法并且可以删除\\b s。
  • -是字符类中的元字符,需要放置在字符类的开头或结尾,因此它不会被解释为范围标记(如在AZ )。
  • 您的标识符以@开头,但这不是[AZ]一部分,因此无法匹配。 您可能希望(可选)以@开始匹配。
  • 显然,标识符不需要位置 2 的数字,并且允许位置 1 之后的字母,因此您应该将三个字符类合并为两个(假设第一个字母需要是字母或数字)。

那给你

Created ID @?[A-Z0-9][-A-Z0-9\\/+@#$%^~&*!():]+ has problems

如果像-(X@Q)这样的 ID 也是有效的,您可以将其简化为

Created ID [-A-Z0-9\\/+@#$%^~&*!():]+ has problems

它可能以也可能不以@ 开头。 有时它以 : 或 AZ 或 az 或 0-9 开头

您正在尝试[AZ][0-9][\\\\//+-@#$%^~&*!():]+ ,它需要1 个字母,后跟1 个数字,后跟任何标点符号。 相反,对所有允许的字符使用相同的字符类

正则表达式

Created ID [@A-Za-z0-9~!#$%^&*()_+\-{}:\"<>?,./]+

regex101 演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM