如何将同一行中的两个单词数为1

How to count two words as 1 in same line

本文关键字:两个 单词数 一行      更新时间:2023-09-26

在我得到的文本文件中,每个句子都用特定的类型表示,例如:contrast.

对比句可以用"CONTRAST"或"CONTR"或"WEAKCONTR"标记来表示。例如:

以这种方式研究网络可以帮助
确定个人向谁学习,在哪里学习
在理解_md:+中的conflicts_MD:+可能产生,并且
情境因素影响学习

所以我用下面的表达式来计算这些:/('_(WEAK))|('_CONTRAST)|('_CONTR('_|'())/g,它工作得很好。

现在的问题是有些句子用多个对比标签来表达,比如CONTR &WEAKCONTR在一起。例如:

impsent_contrast_emp_weakcontr_vis (Studying_MD:+)网络以这种方式可以帮助确定一个人向谁学习,其中理解_md:+中的conflicts_MD:+可能来源于此,并且哪些环境因素影响学习

在这一点上,我必须把它们算作1而不是2。你知道这是如何可能与RegExp吗?

您可以使用查找来断言它,然后计算匹配:

(?='w*_(?:WEAK|CONTRAST|CONTR[_)]))'b'w+'b

此处演示:http://regex101.com/r/xP2yI7/3
注意匹配计数。

这将匹配整个IMPSENT_CONTRAST_EMPH_WEAKCONTR_VIS表达式,但只有当它匹配前瞻中的部分时,它会过滤您正在查找的关键字。即使在同一行中有多个这样的句子,也可以匹配。

另外,我已经简化了您的正则表达式,保留相同的含义。注意你不需要转义_

你只需要关心标签是否出现在行中,所以只要抓住整行,只要它有一个标签,就像这样:

/^([A-Z_]+(WEAK|CONTRAST|CONTR)+[A-Z_]*)/gm

^这行开始,查找与 a - z _后面跟着标记的词块,可以选择后面跟着更多的单词/下划线。

演示

能否尝试添加'w+:

/('_(WEAK'w+))|('_CONTRAST'w+)|('_CONTR('_'w+|'())/g

像这样?

(^('_(WEAK))|('_CONTRAST)|('_CONTR('_|'()))