2

我在 jList 中有一个字符串,我希望用正则表达式拆分它(如果需求发生变化,为了将来的简单性)

字符串看起来很像这样:

编号:GF68464,名称:产品名称

ID 可以是字母和数字的任意组合,并且可以是任意长度。

我只希望匹配 ID,即排除“ID:”以及 ID 后面的逗号之后的任何内容。

这是我到目前为止所拥有的,但它似乎并没有按照我的要求做

[^ID: ][a-zA-Z1-9][^,^.]

更多信息(编辑)

我计划提取 ID 以匹配数组。(因此需要一个正则表达式)。这可以用不同的方式完成吗?

4

4 回答 4

4

你可以试试这个:

ID:\s*(\w+),

并提取第一个捕获组。您还可以使用环视(+1 到@pswg)。


String str = "ID: GF68464, Name: productname";

Matcher m = Pattern.compile("ID:\\s*(\\w+),").matcher(str);
if (m.find()) {
    System.out.println(m.group(1));
}
GF68464
于 2013-08-15T22:47:23.843 回答
3

您可以尝试使用环视

(?<ID:\s*)\w+(?=,)

这将匹配一个或多个单词字符的任何序列,前面是"ID:"任意数量的空格字符,后面是逗号。

于 2013-08-15T22:49:26.253 回答
0

您想要的称为非捕获组。在 SO 上的 Java 中已经有一些相当高质量的例子——例如,这个问题:什么是非捕获组?问号后跟冒号 (?:) 是什么意思?

于 2013-08-15T22:47:06.697 回答
0

Create a regex like /^[a-z A-Z 0-9]*,/ then use can use match function and use value match[0] like

var regex = /^[a-z A-Z 0-9]*\,/;
var matches = your_string.match(regex);
var required_value = matches[0];

hope this helps

于 2013-08-15T22:54:55.043 回答