2024-04-25 20:55:55 发布
网友
我试图从一个不包括引号的字符串中获取所有带引号(“or”)的子字符串。 我想到了这个:
"((?:').*[^'](?:'))|((?:\").*[^\"](?:\"))"
由于某些原因,匹配字符串中仍然包含引号。 有什么原因吗?在
真诚的,尼基塔乌提. 在
您可以使用lookahead和lookback断言:
>>> match = re.search(r"(?<=').*?(?=')", "a 'quoted' string. 'second' quote") >>> print match.group(0) quoted
使用非捕获组并不意味着它们根本就没有被捕获。他们只是没有像普通组那样创建单独的捕获组。在
但是正则表达式的结构要求引号是匹配的一部分:
"('[^']*'|\"[^\"]*\")"
然后,在使用matched_string[1:-1]处理匹配的部分时,只需删除周围的引号。在
matched_string[1:-1]
你可以试试:
import shlex ... lexer = shlex.shlex(your_input_string) quoted = [piece.strip("'\"") for piece in lexer if piece.startswith("'") or piece.startswith('"')]
shlex(词法分析)为您处理转义引号。不过,请注意,它不适用于unicode字符串。在
您可以使用lookahead和lookback断言:
使用非捕获组并不意味着它们根本就没有被捕获。他们只是没有像普通组那样创建单独的捕获组。在
但是正则表达式的结构要求引号是匹配的一部分:
然后,在使用
matched_string[1:-1]
处理匹配的部分时,只需删除周围的引号。在你可以试试:
shlex(词法分析)为您处理转义引号。不过,请注意,它不适用于unicode字符串。在
相关问题 更多 >
编程相关推荐