Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python3.x中使用正则表达式获取字符串的一部分_Python_Regex_String_Python 3.x_Findall - Fatal编程技术网

在Python3.x中使用正则表达式获取字符串的一部分

在Python3.x中使用正则表达式获取字符串的一部分,python,regex,string,python-3.x,findall,Python,Regex,String,Python 3.x,Findall,所以我想做的是有一个名为a的输入字段。然后用一行正则表达式检查a中的“我是(某物)”(注意某物可能是一系列单词),然后打印出你是(某物)多久了 这是我目前的代码: if re.findall(r"i am", a): print('How long have you been {}'.format(re.findall(r"i am", a))) 但这会给我一张清单,上面列出的[我,我]不是(某物)。我如何让它归还我(某物?) 谢谢 Python上的n00b是这样的意思吗 >&g

所以我想做的是有一个名为a的输入字段。然后用一行正则表达式检查a中的“我是(某物)”(注意某物可能是一系列单词),然后打印出你是(某物)多久了

这是我目前的代码:

if re.findall(r"i am", a):
    print('How long have you been {}'.format(re.findall(r"i am", a)))
但这会给我一张清单,上面列出的[我,我]不是(某物)。我如何让它归还我(某物?)

谢谢


Python上的n00b是这样的意思吗

>>> import re
>>> a = "I am a programmer"
>>> reg = re.compile(r'I am (.*?)$')
>>> print('How long have you been {}'.format(*reg.findall(a)))
How long have you been a programmer
r'I am(.*?$”
匹配
I am
,然后匹配字符串末尾的所有内容


要在后面匹配一个单词,可以执行以下操作:

>>> a = "I am an apple"
>>> reg = re.compile(r'I am (\w+).*?$')
>>> print('How long have you been {}'.format(*reg.findall(a)))
How long have you been an

这可能只是一个简单的解决方案,可以避免使用weight和cost regexp

>>> a = "i am foxmask"
>>> print a[5:]
foxmask

在“我是新手程序员”中,你想打印“新手程序员”而不是“新手程序员”不是吗?显示一些示例
a
@nearocomplayer乐于帮助:)。还有一件事@Haidro这匹配了我之后的所有单词。如何使其仅与1匹配?@新手程序员我添加了一个解决方案,可能只需将
(.*)
更改为
\w+
,但这次它将返回“a”而不是“程序员”@FoxMaSk他只需要后面的单词。似乎OP想要使用常规表达式是的,我知道,但可能会看到“re”的替代选项这个简单的模块question@FoxMaSk我需要正则表达式,因为我可以在一行中的任何地方,而不仅仅是在一开始see@NoviceProgrammer不能在不确定单词长度的情况下使用切片表示法