这可能是一个简单的问题。我正在学习如何使用正则表达式,在字符串上执行特定任务时遇到了困难
例如:
示例_string=“;一,一;二,二;三,三;四,四”
所需的#u输出=[“一,o”,“二,t”,“三,t”,“四,f”]#列表输出正常
通过以下步骤,我可以得到[“一”、“二”、“三”]:
def findStringsInMiddle(a, b, text):
return re.findall(re.escape(a)+"(.*?)"+re.escape(b),text)
desired_output = findStringsInMiddle('; ' , ',' , example_string)
但是我很难弄清楚如何正确地配置它来获取逗号+空格+任何我想要的字符类型
有什么建议吗
谢谢
这里有一个解决方案:
输出:
通过包含右侧分隔符并附加可选的
(?:\s*.)?
组,可以稍微重新组织模式:该模式将看起来像
;(.*?,(?:\s*.)?)
(请参见the regex demo),并将匹配:;
-左侧分隔符(.*?,(?:\s*.)?)
-第1组:.*?
-任何零个或多个字符,尽可能少,
-逗号(?:\s*.)?
-一个可选的非捕获组,匹配0+空格的1次或0次出现,然后匹配任何字符李>注意,我添加了
re.S
标志以使.
也匹配换行符见Efull Python snippet below:
您可以设置完整模式(从分号到逗号后的第二个字母)并标记要提取的组:
相关问题 更多 >
编程相关推荐