我在jList中有一个字符串,我希望用正则表达式进行拆分(如果需求发生变化,将来会很简单)
字符串看起来很像这样:
ID:GF68464,名称:productname
ID可以是字母和数字的任意组合,可以是任意长度。
我只希望ID匹配,即不包括“ID:”以及ID后面的逗号后面的任何内容。
这是我迄今为止所拥有的,但它似乎没有按照我的要求去做
[^ID: ][a-zA-Z1-9][^,^.]
进一步信息(编辑)
我计划提取ID以匹配数组。 (因此需要正则表达式)。这可以用不同的方式完成吗?
答案 0 :(得分:4)
你可以试试这个:
ID:\s*(\w+),
并提取第一个捕获组。您也可以使用lookarounds(+1到@ p.s.w.g)。
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
答案 1 :(得分:3)
答案 2 :(得分:0)
您想要的是一个非捕获组。已经有一些相当高质量的例子在Java上用SO做了这个 - 例如,这个问题:What is a non-capturing group? What does a question mark followed by a colon (?:) mean?
答案 3 :(得分:0)
创建一个像/ ^ [a-z A-Z 0-9] *的正则表达式,然后使用可以使用匹配函数并使用值匹配[0]如
var regex = /^[a-z A-Z 0-9]*\,/;
var matches = your_string.match(regex);
var required_value = matches[0];
希望这会有所帮助