繁体   English   中英

从字符串提取属性的任何正则表达式吗?

[英]Any regular expression to extract property from String?


我有一个包含以下属性的字符串:

"T=Junior Developer, DNQ=13346057, SURNAME=Doe, GIVENNAME=John, SERIALNUMBER=UK"

是否存在可以在Java中使用的正则表达式来收集各个属性(例如SURNAME)?
谢谢

这个小示例显示了如何在示例字符串中访问属性名称及其值。 这适用于字符串中的所有属性和值。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class Test {
  public static void main(String[] args) {
    String s = "T=Junior Developer, DNQ=13346057, SURNAME=Doe, GIVENNAME=John, SERIALNUMBER=UK";
    Matcher m = Pattern.compile("(?:, )?([^=]+)\\=([^,]+)").matcher(s);
    while (m.find()) {
      System.out.println(m.group(1) + " - " + m.group(2));
    }
  }
}

正则表达式的解释:

(?:, )?([^=]+)\\=([^,]+)
  • (?:, )? 是可以但不一定要发生的非捕获组。 它通过属性值对之间的逗号和空格分隔分隔符。
  • ([^=]+)是一个与一个或多个字符匹配的组,直到出现=
  • \\\\=匹配= 这是一个特殊字符,因此必须转义。
  • ([^,]+)的一个或多个字符匹配到下一个,当下一个属性格式将启动。
SURNAME=[^,]+

您可以使用它。或者为了安全起见,您也可以使用

SURNAME=.*?(?=,\s)

第二个将工作,即使你有,你的姓。

暂无
暂无

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

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