类似于如下正则逻辑
((互联网.*温度)|(温度.*互联网))
但是不一样的是,分组内的词不止是“温度”“互联网”而是由多个数量不确定的词组成
1
ClericPy 2019-11-13 12:21:01 +08:00
finditer 来数数?
给点例子其实比文字描述更省时间 |
2
Luo2mk OP @ClericPy 一个 string 如果能匹配到某一类规则内的两个关键字以上,就把这个 string 输出为某一类,用来给 string 分类的。
|
3
TomVista 2019-11-13 13:57:27 +08:00 via Android
let arr= []
/民主 /.test ( str ).push ( arr ) …… /字符 /.test ( str ).push ( arr ) 判断 arr 里面的 true 的个数。。 |
4
robinjin 2019-11-13 14:20:23 +08:00
((富强|民主|文明|和谐).*?){2}
|
5
Luo2mk OP 自己解决了:用逗号来界定分组的选取范围,然后(?!\1)来从没被分组 1 选中的范围中查找词组。如果有 别的场景就把界定范围的逗号替换掉即可
(法律|条例).*,(?!\1)(法律|条例) 可以匹配到的 aaaaaaaaaa 法律啊啊啊啊啊啊啊啊啊,aaaaaa 法律 aaaaaaaa,条例, 不能匹配到的 aaaaaaaaaa 法律啊啊啊啊啊啊啊啊啊,aaaaaa 法律 aaaaaaaa,法律, |
6
Kasumi20 2019-11-13 18:21:20 +08:00
((富强|民主|文明|和谐).*){2}
``` 1 import java.lang.* 2 import lib.logger.* 3 4 val log = Logger("Global") 5 6 fun main() { 7 val regex = """((富强|民主|文明|和谐).*){2}""".toRegex() 8 println("富强, 民主".matches(regex)) 9 println("自由 和谐".matches(regex)) 10 } ``` true false |
7
f1ren2es 2019-11-13 21:00:53 +08:00
最近在看敏感词过滤的东西,这个可以用 dfa 实现不过场景简单的话就算了。。。
|
8
lihongjie0209 2019-11-13 21:22:19 +08:00
编译原理的词法分析和语法分析了解一下
|
9
TimePPT 2019-11-13 21:28:39 +08:00
用 jieba 分词控制下分词颗粒度,分词结果 unique 出来和目标词列表直接比对算命中量就完了。
|
10
TimePPT 2019-11-13 21:30:39 +08:00
李文明背了一袋富强粉。
你正则匹配直接 GG 当然,如果是做国内发帖闽橄瓷规避算我没说 |