请教一个字符串匹配的正则,或者有其他解决方法也可
源数据 list<string>:
1.张三关于工作的说明
2.一份来自李四的说明
3.张三关于上班之看法
4.王五写了一份关于工作的总结
我的参数配置为:#关于#的# , #为需要模糊匹配的地方,那么我想要筛选出来的结果数据为 1 、4
这个参数配置是可修改的
请问正则应该咋写呢?或者有其他的筛选方式吗?谢谢各位
源数据 list<string>:
1.张三关于工作的说明
2.一份来自李四的说明
3.张三关于上班之看法
4.王五写了一份关于工作的总结
我的参数配置为:#关于#的# , #为需要模糊匹配的地方,那么我想要筛选出来的结果数据为 1 、4
这个参数配置是可修改的
请问正则应该咋写呢?或者有其他的筛选方式吗?谢谢各位
「这个参数配置是可修改的」,可以改是啥意思?修改「关于」和「的」关键字?还是「#」的位置,还是定义?
Pattern.matches( “#关于#的#”.replace( “#”, “.+” ), sentence );
最前面的字符串是参数配置 … 可以随意修改但需要注意不能含有正则关键字如点儿加号括号一类的 …
后面 sentence 是你要匹配的字符串 … 正常情况下直接用这个匹配作为 filter 规则过一遍 List 就好 …
– 运行 1:符合规则「#关于#的#」的 str
– 运行 2:符合规则「#昨天#会议」的 str
但如果应对#占位符可存在或不存在的场景,至少要用到后向查找之类的能力,生成正则就会复杂一些了……
比如外层做一个循环 … 第一次用配置 Ⅰ 过一遍 … 第二次用配置 Ⅱ 再过一遍 …
或者如果需要不同的 sentence 使用不同的规则 … 在源 List 里面分组就好 …
至于正则那一堆断言 … 我不觉得主会用到 … 毕竟功能里不涉及捕获规则 … 只是模糊匹配而已 …
最后 # 不存在的情况 … 我没太明白这会有什么问题 … 从语义上看就是去掉模糊的部分 …
所以这时候 matches() 实际上就是 equals() … 我的代码可以正常运行结果也符合预期不是吗 …