正则表达式在字符串中搜索

我正在努力学习如何使用正则表达式,但我有一个问题。 假设我有一个字符串


line = 'Cow Apple think Woof`


我想看看是否存在
line

至少两个单词以大写字母开头 /当然,就是/. 在 Python 我试图做以下了


import re
test = re.search/r'/\b[A-Z]/[a-z]/*\b/{2,}',line/
print/bool/test//


但它打印
False

. 如果我相反


test = re.search/r'/\b[A-Z]/[a-z]/*\b/',line/


我发现
print/test.group/1//

- 这是
Cow

, 但
print/test.group/2//

- 这是
w

, 第一次巧合的最后一封信 /在
test.group

/. 没有其他元素

是否有任何提案来定义这个问题/或者如何最好地接近整体问题?
已邀请:

奔跑吧少年

赞同来自:

匹配的最后一封信是由于内部括号的组。 扔他们,一切都会好的。


>>> t = re.findall/'/[A-Z][a-z]+/', line/
>>> t
['Cow', 'Apple', 'Woof']
>>> t = re.findall/'/[A-Z]/[a-z]/+/', line/
>>> t
[/'Cow', 'w'/, /'Apple', 'e'/, /'Woof', 'f'/]


当然,资本词数
len/t/

.

裸奔

赞同来自:

我使用这个功能
findall

, 找到对应的所有副本 regex. 使用
len

, 看看有多少巧合,在这种情况下他展示了
3

. 你可以检查长度是否更多 2, 并回归
True

或者
False

.


import re

line = 'Cow Apple think Woof'

test = re.findall/r'/\b[A-Z]/[a-z]/*\b/',line/
print/len/test/ >= 2/


如果你想只使用 regex, 您可以搜索大写字,然后是它们之间的几个字符和另一个大写字。


test = re.search/r'/\b[A-Z][a-z]*\b//.*//\b[A-Z][a-z]*\b/',line/
print/bool/test//



/\b[A-Z][a-z]*\b/

- 从大写字母中获取这个词


/.*/

- 交流 0 或更多符号


/\b[A-Z][a-z]*\b/

- 去第二个资本词

这种方法不是那么动摇,因为它在尝试比较时不起作用 3 资本词汇。

君笑尘

赞同来自:

import re

sent = "His email is abc@some.com, however his wife uses xyz@gmail.com"

x = re.findall/'[A-Za-z]+@[A-Za-z\.]+', sent/

print/x/


如果在地址的末尾 email ID /abc@some,com./, 有一个点,那么它将在地址的末尾返回 email. 但是,这可以单独说。

要回复问题请先登录注册