我有这样的字符串:
String s = "word=PS1,p1,p2,p3=q1,q2|word2=PS3,p4,p5,p6=q3";
或像这样:
String s2 = "word3=PS2,p7,p8=q4,q5,q6|=PS3,p9=";
或像这样:
String s3 = "=PS3=";
所以,在形式上 - 字符串包含字典中的一些单词定义,用“|”分隔 象征。
这里:
word - 字典中的单词(可选,如 S2 或 S3)
PS1、PS2、PS3 - 词性标签(必需)
p1,p2,... - 一些参数(可选)
q1, q2, q3, ... - 一些其他参数(也是可选的)
我想构建正则表达式,它会在文本中找到所有出现的此类字符串并为我提供组:
- group1 - 单词
- group2 - 词性标签
- group3, group4, ... - 参数 p
- group(k), group(k+1), ... - 另一个参数 (q)
我不关心最后一个 p 参数和第一个 q 参数的组索引。我应该知道,第一组 - 是单词(可能为空),第二组 - 词性,其他组 - 参数 p 和 q。
现在我有这样的正则表达式:
"([a-z]*)?=([A-Z]+)(,?[a-z]+)*=(,?[a-z]+)*")
但它不能正常工作。它只显示了最后一个参数 p 和 q。即(对于 S2):
- group1 = word3 - 好的
- 组 2 = PS2 - 好的
- group3 = p8 - 不正常(仅最后一个 p 参数)
- group4 = q6 - 不正常(也是最后一个 q 参数)
你可以帮帮我吗?
更新:“=”-字符仅是 p 参数和 q 参数之间的拆分字符。在我的问题中没有必要。您应该认为,p 参数和 q 参数没有什么不同。
实际输入示例:
String s = "bread=NOUN,plur,link=form|=VERB="