Python 正则表达式匹配两个字符之间的字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 正则表达式匹配两个字符之间的字符相关的知识,希望对你有一定的参考价值。
参考技术A1、打开JUPYTER NOTEBOOK,新建一个空白的PY文档。
2、import re首先必须要做的是引入regular expression。
3、a = re.compile(r' ')a.sub(r' ', 'my name is Peter.')可以定义两个空格的情况下变成一个空格。
4、也可以定义多个重复单词的时候,变成一个。
5、用+就可以代替一个或者多个的意思。
6、\\s表示空格,可以定义两个或者两个以上就变成一个。
7、c = re.compile(r'\\s2,'),c.sub(' ', 'My name is Peter.'),后续只能直接输入改成的字符。
Python 正则表达式匹配包含两个或更少 o 字符的空格分隔的单词
【中文标题】Python 正则表达式匹配包含两个或更少 o 字符的空格分隔的单词【英文标题】:Python regex match space-separated words that contain two or fewer o characters 【发布时间】:2021-12-24 03:55:08 【问题描述】:我是 python 新手,正在尝试解决一些问题(以学习的方式)。 我想匹配包含两个或更少 o 字符的空格分隔的单词。 这就是我实际所做的:
import re
pattern = r'\b(?:[^a\s]*o)1[^a\s]*\b'
text = "hop hoop hooop hoooop hooooop"
print(re.findall(pattern, text))
当我运行我的代码时,它确实匹配字符串中的所有单词.. 有什么建议吗?
【问题讨论】:
您可以在regex101 之类的网站上阅读有关正则表达式和训练的信息。那里解释了你的模式。 【参考方案1】:你可以使用
import re
pattern = r'(?<!\S)(?:[^\so]*o)0,2[^o\s]*(?!\S)'
text = "hop hoop hooop hoooop hooooop"
print(re.findall(pattern, text))
# Non regx solution:
print([x for x in text.split() if x.count("o") < 3])
请参阅Python demo。两者都产生['hop', 'hoop']
。
(?<!\S)(?:[^\so]*o)0,2[^o\s]*(?!\S)
正则表达式匹配
(?<!\S)
- 左侧空白边界
(?:[^\so]*o)0,2
- 除空格和o
char 和o
char 之外的任何零个或多个字符出现零次或两次出现
[^o\s]*
- 除了o
和空格之外的零个或多个字符
(?!\S)
- 右侧空白边界
【讨论】:
以上是关于Python 正则表达式匹配两个字符之间的字符的主要内容,如果未能解决你的问题,请参考以下文章