源数据 list<string>:
1.张三关于工作的说明
2.一份来自李四的说明
3.张三关于上班之看法
4.王五写了一份关于工作的总结
我的参数配置为:#关于#的# , #为需要模糊匹配的地方,那么我想要筛选出来的结果数据为 1 、4
这个参数配置是可修改的
请问正则应该咋写呢?或者有其他的筛选方式吗?谢谢各位
1
br_wang 2021-02-23 17:39:47 +08:00
就当前这个问题 `/^(.+)关于(.+)的(.+)$/` 这样是可以应付的。
「这个参数配置是可修改的」,可以改是啥意思?修改「关于」和「的」关键字?还是「#」的位置,还是定义? |
2
mugglezzz OP @br_wang #1 谢谢回答, [修改「关于」和「的」关键字?还是「#」的位置] ,这两种都有可能。我的做法是会用#分割这个配置参数,然后循环拼接出来这个正则,只是我不知道这个正则的规则是啥
|
3
Sunyanzi 2021-02-23 19:24:56 +08:00
我没明白为啥你要循环拼正则出来 ... 看你顶楼的描述好像是 Java ... 对应写法如下 ...
Pattern.matches( "#关于#的#".replace( "#", ".+" ), sentence ); 最前面的字符串是参数配置 ... 可以随意修改但需要注意不能含有正则关键字如点儿加号括号一类的 ... 后面 sentence 是你要匹配的字符串 ... 正常情况下直接用这个匹配作为 filter 规则过一遍 List 就好 ... |
4
br_wang 2021-02-23 19:32:15 +08:00
|
5
Sunyanzi 2021-02-23 20:03:24 +08:00
@br_wang 如果是这样的话 ... 那是不是把配置作为参数传进来就好呢 ..?
比如外层做一个循环 ... 第一次用配置 Ⅰ 过一遍 ... 第二次用配置 Ⅱ 再过一遍 ... 或者如果需要不同的 sentence 使用不同的规则 ... 在源 List 里面分组就好 ... 至于正则那一堆断言 ... 我不觉得楼主会用到 ... 毕竟功能里不涉及捕获规则 ... 只是模糊匹配而已 ... 最后 # 不存在的情况 ... 我没太明白这会有什么问题 ... 从语义上看就是去掉模糊的部分 ... 所以这时候 matches() 实际上就是 equals() ... 我的代码可以正常运行结果也符合预期不是吗 ... |