Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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
Python正则表达式匹配字符串的最后一个字_Python_Regex - Fatal编程技术网

Python正则表达式匹配字符串的最后一个字

Python正则表达式匹配字符串的最后一个字,python,regex,Python,Regex,我有以下字符串: "crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO" 而且,我正在尝试仅与正则表达式匹配3P-DC-CRYPTO 到目前为止,我已成功编写了以下正则表达式: crypto_acl = re.findall("address [-\w+]*",output) 但是,它与地址3P-DC-CRYPTO匹配 任何建议?您可以使用(?您可以使用(?您可以通过以下方式捕获所需的单词: >>> crypto_acl

我有以下字符串:

"crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO"
而且,我正在尝试仅与正则表达式匹配
3P-DC-CRYPTO

到目前为止,我已成功编写了以下正则表达式:

crypto_acl = re.findall("address [-\w+]*",output)
但是,它与地址3P-DC-CRYPTO匹配


任何建议?

您可以使用
(?您可以使用
(?您可以通过以下方式捕获所需的单词:

>>> crypto_acl = re.findall("address ([-\w+]*)",output)
>>> crypto_acl
['3P-DC-CRYPTO']
另外,由于您在问题中提到需要字符串的最后一个单词,您可以这样做,而无需在
address
后面显式查找单词:

>>> crypto_acl = re.findall(r"\b([-\w+]+)$",output)
>>> crypto_acl
['3P-DC-CRYPTO']
#or simply 
>>> crypto_acl = output.split()[-1]
>>> crypto_acl
'3P-DC-CRYPTO'

现场演示

您可以通过以下方式捕获所需单词:

>>> crypto_acl = re.findall("address ([-\w+]*)",output)
>>> crypto_acl
['3P-DC-CRYPTO']
另外,由于您在问题中提到需要字符串的最后一个单词,您可以这样做,而无需在
address
后面显式查找单词:

>>> crypto_acl = re.findall(r"\b([-\w+]+)$",output)
>>> crypto_acl
['3P-DC-CRYPTO']
#or simply 
>>> crypto_acl = output.split()[-1]
>>> crypto_acl
'3P-DC-CRYPTO'

现场演示

实际上不需要正则表达式:

string = "crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO"

# check for address as well
words = string.split()
if words[-2] == 'address':
    last_word = words[-1]
    print(last_word)

这将检查地址,然后捕获最后一个单词。

实际上不需要正则表达式:

string = "crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO"

# check for address as well
words = string.split()
if words[-2] == 'address':
    last_word = words[-1]
    print(last_word)
这将检查
地址,然后捕获最后一个单词。

尝试使用正则表达式搜索

import re

str = "crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO"

result = re.search(r'(address .*)', str)

result.group()                          # return as 'address 3P-DC-CRYPTO'


result = re.search(r'address (.*)', str)

result.group()                     #  return as 'address 3P-DC-CRYPTO'
result.group(0)                   #  return as 'address 3P-DC-CRYPTO'
result.group(1)                  #  return as '3P-DC-CRYPTO'
尝试使用正则表达式搜索

import re

str = "crypto map OUTSIDEMAP 540 match address 3P-DC-CRYPTO"

result = re.search(r'(address .*)', str)

result.group()                          # return as 'address 3P-DC-CRYPTO'


result = re.search(r'address (.*)', str)

result.group()                     #  return as 'address 3P-DC-CRYPTO'
result.group(0)                   #  return as 'address 3P-DC-CRYPTO'
result.group(1)                  #  return as '3P-DC-CRYPTO'

您可以使用正向查找并捕获组()

重新导入

pattern=r“(?您可以使用正向查找并捕获组()

重新导入

pattern=r“(?如果要匹配最后一个单词,不必使用regex:
output.split()[-1]
即可。如果要匹配最后一个单词,不必使用regex:
output.split()[-1]
可以。因为我有多行要检查,所以您的选项对我来说是正确的。谢谢因为我有多行要检查,所以您的选项对我来说是正确的。谢谢