首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将换行符和任意字符与Python regex匹配

将换行符和任意字符与Python regex匹配
EN

Stack Overflow用户
提问于 2015-07-15 19:34:06
回答 2查看 4K关注 0票数 1

我有一条短信

var12.1 一个 一个 每日生活津贴88 123 secondVar12.1

varsecondVar之间的字符串可能是不同的(并且可能有不同的计数)。

如何使用regexp将其转储?

我正在尝试这样的东西,但没有用:

代码语言:javascript
复制
re.findall(r"^var[0-9]+\.[0-9]+[\n.]+^secondVar[0-9]+\.[0-9]+", str, re.MULTILINE)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-15 19:35:41

你可以用:

代码语言:javascript
复制
var\d+(?:(?!var\d).)*?secondVar

演示)改性剂必须与此正则表达式一起使用,这样.才能匹配换行符。分隔符之间的文本将位于第1组中。

注意:最近的匹配将由于(?:(?!var\d).)*? 脾气暴躁的象征而匹配(也就是说,如果在var + 1+数字之后有另一个var +一个数字,那么匹配将在第二个varsecondVar之间。

NOTE2:您可能希望使用\b单词边界来匹配以它们开头的单词:\bvar(?:(?!var\d).)*?\bsecondVar

REGEX解释

  • var -匹配起始分隔符
  • \d+ - 1+数字
  • (?:(?!var\d).)*? --一种与任意字符、0或更多(但尽可能少)重复相匹配的、不启动字符序列var和数字的经过调整的贪婪标记。
  • secondVar -匹配secondVar字面意思。

IDEONE演示

代码语言:javascript
复制
import re
p = re.compile(r'var\d+(?:(?!var\d).)*?secondVar', re.DOTALL)
test_str = "var12.1\na\na\ndsa\n\n88\n123!!!\nsecondVar12.1\nvar12.1\na\na\ndsa\n\n88\n123!!!\nsecondVar12.1"
print(p.findall(test_str))

输入字符串的结果(为了演示目的,我将其加倍):

代码语言:javascript
复制
['12.1\na\na\ndsa\n\n88\n123!!!\n', '12.1\na\na\ndsa\n\n88\n123!!!\n']
票数 4
EN

Stack Overflow用户

发布于 2015-07-15 19:36:13

您正在寻找re.DOTALL标志,其正则表达式如下:var(.*?)secondVar。这个正则表达式将捕获varsecondVar之间的所有内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31439488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档