如何匹配两个其他单词之间的可选单词?
How to match an optional word between two other words?
假设我要匹配单词 "green apple"
。我还想匹配 "green big apple"
.
这样的词
这个正则表达式怎么写?
我写了r"green [a-z+] apple"
,但这行不通。
你很接近,但你的 +
在 []
里面而不是外面,而且这个词可能不存在所以你需要把整个东西(和一个空格)包裹起来在 ?
中匹配一个词或不匹配词(可以用 *
替换任意数量的中间词)。
import re
pattern = r"green ([a-z]+ )?apple"
print(re.match(pattern, "green apple").group(0))
print(re.match(pattern, "green big apple").group(0))
输出:
green apple
green big apple
模式
这应该没问题。
/(green)(.+)(apple)/
你的问题的答案并不简单,因为你需要决定你想如何处理不同的场景。例如:
- 您想捕捉“绿色”和“苹果”之间的所有内容吗?
- 捕获组是否相关,或者您只是想知道这两个词是否出现在“green”在“apple”之前的给定序列中?
- 所说单词的顺序是否重要,它们是否必须成对出现,即每次出现“green”时是否必须有一个“apple”?
匹配示例
下面是该模式将捕获的内容的示例。
青苹果
绿色大苹果
香蕉绿色小蓝莓苹果橙色草莓
假设我要匹配单词 "green apple"
。我还想匹配 "green big apple"
.
这个正则表达式怎么写?
我写了r"green [a-z+] apple"
,但这行不通。
你很接近,但你的 +
在 []
里面而不是外面,而且这个词可能不存在所以你需要把整个东西(和一个空格)包裹起来在 ?
中匹配一个词或不匹配词(可以用 *
替换任意数量的中间词)。
import re
pattern = r"green ([a-z]+ )?apple"
print(re.match(pattern, "green apple").group(0))
print(re.match(pattern, "green big apple").group(0))
输出:
green apple
green big apple
模式
这应该没问题。
/(green)(.+)(apple)/
你的问题的答案并不简单,因为你需要决定你想如何处理不同的场景。例如:
- 您想捕捉“绿色”和“苹果”之间的所有内容吗?
- 捕获组是否相关,或者您只是想知道这两个词是否出现在“green”在“apple”之前的给定序列中?
- 所说单词的顺序是否重要,它们是否必须成对出现,即每次出现“green”时是否必须有一个“apple”?
匹配示例
下面是该模式将捕获的内容的示例。
青苹果
绿色大苹果
香蕉绿色小蓝莓苹果橙色草莓