我正在尝试在首字母缩写ADJ周围找到字符串。字符串如下所示:
·NOM·JJ·ADJ+CASE_DEF_GEN
·NOM·JJ·ADJ+CASE_DEF_ACC
·NOM·JJ·ADJ+CASE_INDEF_GEN
·NOM·DT+JJ·DET+ADJ+NSUFF_FEM_SG+CASE_DEF_GEN
·NOM·JJ·ADJ+CASE_INDEF_GEN
·NOM·JJ·ADJ+NSUFF_FEM_SG+CASE_INDEF_GEN
·NOM·DT+JJ·DET+ADJ+NSUFF_FEM_SG+CASE_DEF_ACC
到目前为止,我有这个:
/[A-Z·\+#_]*?[·\+]ADJ[·\+][A-Z_·\+#]*?/g
但是它仅从字符串的开头到“ ADJ +” ·NOM·DT+JJ·DET+ADJ+
之间匹配。
由于ADJ之后的其余字符串与ADJ之前的字符串开头具有相同的组成,因此我认为此/[A-Z·\+#_]*?[·\+]/g
应该有效,但无效。
如何获取它以匹配其余字符串?
答案 0 :(得分:2)
*?
后面的+ADJ+
量词对它后面的空字符串感到满意,因为?
在匹配"the minimum number of times possible"之前和{{ 1}}是零倍。
因此删除*
,这对其余的行也没有作用
?
答案 1 :(得分:1)
我的猜测是,您想确定字符串中是否有ADJ
,如果是这样,也许我们可以将表达式简化为类似于以下内容的东西:
([A-Z·+#_]*)\bADJ\b([A-Z·+#_]*)
在this demo的右上角对表达式进行了说明,如果您想探索/简化/修改它,在this link中,您可以观察它如何与某些示例输入步骤匹配一步一步,如果您喜欢。
答案 2 :(得分:1)
最后删除?
会匹配整个字符串,
/[A-Z·\+#_]*?[·\+]ADJ[·\+][A-Z_·\+#]*/g
我不确定您为什么需要在?
中使用*
。