共同研习 发表于 2019-12-9 22:13:19

几个关于正则表达式检索的问题

本帖最后由 共同研习 于 2019-12-10 17:17 编辑

我使用的是emeditor,有时常规搜索不能满足需求,需要正则表达式,有几个问题我不懂,希望高人指教:
(1)给定两个字符(指定顺序)以及一个数字n,检索所有的行,要求包含这两个字符且两个字符间正好相隔n个字符。
(2)给定两个字符(指定顺序)以及一个数字n,检索所有的行,要求包含这两个字符且两个字符间隔不大于n个字符。
(3)如何搜索包含“A一A”(笑一笑,跑一跑,等等)格式的行?---------------------
感谢大家的回复

Refrain1125 发表于 2019-12-9 22:50:53

如果两个字符是 a 和 b
第1个:a.{n}b
第2个:a.{0,n}b
第3个:(.)一\1
严格一点,要求汉字的话就是 ([\x{4E00}-\x{9FFF}])一\1

前面两个不知道你要求严不严格:相隔的这 n 个字符中能不能有 a, b存在,能的话就是上面的,不能的话就是:a[^ab]{n}b

klwo2 发表于 2019-12-9 22:38:39

“A一A”(笑一笑,跑一跑,等等)好像做不了

simonfire 发表于 2019-12-9 22:50:58

1和2,那个数字n套用在正则里的{m,n}里,很容易呀,比如:“你”和“好”,隔20个字符,你.{20}好
换行或者啥的按实际情况再考虑
3,没明白你的意思

共同研习 发表于 2019-12-9 22:51:47

感谢上面几位指教。改日我会自己试验。

999阿彌陀佛 发表于 2019-12-9 22:51:50

(3)如何搜索包含“A一A”(笑一笑,跑一跑,等等)格式的行?

(.)一\1

共同研习 发表于 2019-12-9 22:52:49

simonfire 发表于 2019-12-9 22:50
1和2,那个数字n套用在正则里的{m,n}里,很容易呀,比如:“你”和“好”,隔20个字符,你.{20}好
换行或者 ...

关于3,我的意思是说,把所有带“跑一跑”“笑一笑”“跳一跳”这种“字+“一”+字(前后相同)”的行筛出来,按照前面几位的意见似乎做不到。

Refrain1125 发表于 2019-12-9 22:59:44

共同研习 发表于 2019-12-9 22:52
关于3,我的意思是说,把所有带“跑一跑”“笑一笑”“跳一跳”这种“字+“一”+字(前后相同)”的行筛 ...

你是要得到满足条件的行的行号这种或类似东西吗?

simonfire 发表于 2019-12-9 23:19:37

共同研习 发表于 2019-12-9 22:52
关于3,我的意思是说,把所有带“跑一跑”“笑一笑”“跳一跳”这种“字+“一”+字(前后相同)”的行筛 ...

^.*?(.)一\1.*?\n\r
这个应该能匹配整行,不过细节部分还得自己把握呀,想学习就多试多看,都是这么过来的

共同研习 发表于 2019-12-9 23:21:45

simonfire 发表于 2019-12-9 23:19
^.*?(.)一\1.*?\n\r
这个应该能匹配整行,不过细节部分还得自己把握呀,想学习就多试多看,都是这么过来 ...

改日我会自己试验的。
其实能匹配一行的一部分,利用书签功能,就相当于做到匹配行了。
页: [1]
查看完整版本: 几个关于正则表达式检索的问题