那么在匹配的时候,不匹配省略号刚还怎么修改呢
时间: 2024-03-01 08:53:31 浏览: 9
如果你不想包括省略号在内,可以使用否定字符类`[^ ]`来排除省略号。例如,以下正则表达式将匹配任意两个标点符号,但不包括省略号:
```
[,,。.;;::??][^…][,,。.;;::??]
```
这个正则表达式中的`[^…]`表示匹配除省略号以外的任意字符。因此,这个正则表达式将匹配任意两个标点符号,但不包括省略号。
在PG SQL中,你可以使用这个正则表达式来执行类似的模糊匹配:
```
SELECT * FROM my_table WHERE my_column ~ '[,,。.;;::??][^…][,,。.;;::??]';
```
这个查询语句将返回所有包含任意两个标点符号,但不包括省略号的字符串的行。
相关问题
我有一个想要匹配一段话中的一句话,将这句话的前后保留20个字符,如果在前20个字符中遇到都逗号句号就不匹配,其他显示省略号,给我一个正则表达
可以使用负向前瞻和负向后瞻来实现这个需求,同时使用回溯引用来匹配前面 20 个字符中是否有逗号或句号,具体的正则表达式如下:
```
(?(?<=.{0,20}[,.])|.{0,20})(.{0,20})(你要匹配的句子)(.{0,20})(?![,.])
```
其中:
- `(?(?<=.{0,20}[,.])|.{0,20})` 表示回溯引用,如果前面 20 个字符中有逗号或句号,则不进行匹配,否则匹配前面 0 到 20 个字符
- `(.{0,20})` 表示匹配前面的字符出现 0 到 20 次
- `(你要匹配的句子)` 表示你要匹配的句子
- `(.{0,20})` 表示匹配后面的字符出现 0 到 20 次
- `(?![,.])` 表示负向后瞻,即后面没有逗号或句号
这个正则表达式可以匹配符合要求的句子,并且在匹配到的句子前后各保留 20 个字符,如果匹配到的句子前面的 20 个字符中有逗号或句号,则不进行匹配。如果匹配到的句子前后不足 20 个字符,则省略号代替。
如果你想要提取匹配到的句子及其前后的字符,可以使用正则表达式的捕获组,例如:
```
(?(?<=.{0,20}[,.])|.{0,20})(.{0,20})(你要匹配的句子)(.{0,20})(?![,.])
```
将匹配到的部分用括号括起来,就可以在匹配时同时提取出想要的内容了。
我有一个想要匹配一段话中的一句话,将这句话的前后保留20个字符,如果遇到都逗号句号就不匹配,其他显示省略号,给我一个正则表达
可以使用负向前瞻和负向后瞻来实现这个需求,具体的正则表达式如下:
```
(?<![,\.])(.{0,20})(你要匹配的句子)(.{0,20})(?![,\.])
```
其中:
- `(?<![,\.])` 表示负向前瞻,即前面没有逗号或句号
- `(.{0,20})` 表示匹配前面的字符出现 0 到 20 次
- `(你要匹配的句子)` 表示你要匹配的句子
- `(.{0,20})` 表示匹配后面的字符出现 0 到 20 次
- `(?![,\.])` 表示负向后瞻,即后面没有逗号或句号
这个正则表达式可以匹配符合要求的句子,并且在匹配到的句子前后各保留 20 个字符,如果匹配到的句子前后有逗号或句号,则不进行匹配。如果匹配到的句子前后不足 20 个字符,则省略号代替。
如果你想要提取匹配到的句子及其前后的字符,可以使用正则表达式的捕获组,例如:
```
(?<![,\.])(.{0,20})(你要匹配的句子)(.{0,20})(?![,\.])
```
将匹配到的部分用括号括起来,就可以在匹配时同时提取出想要的内容了。