Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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正则表达式:Multiple";“开始”;术语,但应仅与最后一个“匹配”;“开始”;“之前的期限”;完";学期_Python_Regex - Fatal编程技术网

Python正则表达式:Multiple";“开始”;术语,但应仅与最后一个“匹配”;“开始”;“之前的期限”;完";学期

Python正则表达式:Multiple";“开始”;术语,但应仅与最后一个“匹配”;“开始”;“之前的期限”;完";学期,python,regex,Python,Regex,从以下字符串: s = "ABCD {DB_any_alphanumeric_character\} ABCD {DB_any_alphanumeric_character}.TABLE ABCD" 我只想匹配{DB\u any\u字母数字\u字符}.TABLE。因此,起始项是{DB\u,结束项是.TABLE。我的困难在于字符串中有两个{DB\u 如何使其仅从第二个{DB\ucode>到.TABLE匹配? 我觉得这不可能是一个非常复杂的正则表达式,但尽管在网上阅读了几十个与正则表达式相关的st

从以下字符串:

s = "ABCD {DB_any_alphanumeric_character\} ABCD {DB_any_alphanumeric_character}.TABLE ABCD"
我只想匹配
{DB\u any\u字母数字\u字符}.TABLE
。因此,起始项是
{DB\u
,结束项是
.TABLE
。我的困难在于字符串中有两个
{DB\u

如何使其仅从第二个
{DB\ucode>到
.TABLE
匹配?

我觉得这不可能是一个非常复杂的正则表达式,但尽管在网上阅读了几十个与正则表达式相关的stackoverflow问题和教程(例如…),我还是失败了

以下是我两次失败的尝试:

exp = re.search(r"^{DB\w*TABLE$", s)
在我看来,它应该返回一个以
{DB
开头的字符串,后跟零个或多个字母数字字符的重复,并以
TABLE
结尾

另一次尝试:

test = re.search(r"{DB(.+?).TABLE", s)

这将返回
{DB\u ABCD\\\}ABCD{DB\u ABCD}.TABLE
,这正是我不想要的。

您可以使用regex
“{DB\u\w*}.TABLE”
只返回后跟.TABLE的表名

import re

s = "ABCD {DB_any_alphanumeric_character\} ABCD {DB_any_alphanumeric_character}.TABLE ABCD"
exp = re.search(r"{DB_\w*}.TABLE", s)
print(exp.group(0))
输出

'{DB_any_alphanumeric_character}.TABLE'

^
$
符号断言开始和结束位置。如果这是字符串的全部内容,您的第一次搜索将只匹配
{DB…TABLE
。使用:
re.findall(r'{DB\uw*}\.TABLE',s)