java - Java 中的正则表达式帮助

标签 java regex

我正在尝试将以下字符串与正则表达式进行比较:

@[xyz="1","2"'"4"] ------- valid
@[xyz] ------------- valid
@[xyz="a5","4r"'"8dsa"] -- valid

@[xyz="asd"] -- invalid
@[xyz"asd"] --- invalid
@[xyz="8s"'"4"] - invalid

有效模式应该是:

  • @[xyz 然后 = 符号然后一些字符然后 , 然后一些字符然后 ' 然后一些字符最后是 ]。这意味着如果 xyz 之后有字符,那么它们的格式必须是 ="XXX","XXX"'"XXX"
  • 或仅@[xyz]xyz 后没有字符。

我试过使用正则表达式,但没有成功:

String regex = "@[xyz=\"[a-zA-z][0-9]\",\"[a-zA-z][0-9]\"'\"[a-zA-z][0-9]\"]";

此处的引号(部分在 xyz 之后)是可选的,引号之间的字符数也不固定,并且此模式前后也可能有一些字符,如 asdadad @[xyz] adadad.

最佳答案

您可以使用正则表达式:

@\[xyz(?:="[a-zA-z0-9]+","[a-zA-z0-9]+"'"[a-zA-z0-9]+")?\]

See it

表示为 Java 字符串:

String regex = "@\\[xyz=\"[a-zA-z0-9]+\",\"[a-zA-z0-9]+\"'\"[a-zA-z0-9]+\"\\]";

您的正则表达式有什么问题?

  • [...] 定义了一个字符类。当您想要匹配文字 [] 时,您需要在前面加上一个 \ 来转义它。

  • [a-zA-z][0-9] 匹配一个字母后跟一个数字。但是您需要一个或多个字母数字字符。所以你需要[a-zA-Z0-9]+

关于java - Java 中的正则表达式帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9258953/

相关文章:

ios - 适用于各种日期格式的正则表达式 iOS

javascript - 使用字符串替换将变量传递到正则表达式

java - Java中的正则表达式,\\s vs.\\s+

javascript - 正则表达式选择没有空格的文本有限制

java - 如何单独同步数据成员

java - 在什么情况下将调用 Java Agent premain 方法?

java - Itext 签名空签名字段

java - Collections.shuffle() 真的足够随机吗?实际例子似乎否定了这种说法

c# - 正则表达式模式生成器

Java Swing : ImageIcon not appearing in eclipse?