- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想匹配多行字符串中的整行(此代码是检查正确输出格式的单元测试的一部分)。
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> re.match(r".*score = 0\.59.*", r"score = 0.65\nscore = 0.59\nscore = 1.0", re.MULTILINE)
<_sre.SRE_Match object; span=(0, 39), match='score = 0.65\\nscore = 0.59\\nscore = 1.0'>
这很好用,我可以匹配多行字符串中的任何内容。但是,我想确保我匹配整行。文档说当使用 re.MULTILINE
时,^
和 $
应该匹配行的开头和结尾。但是,这对我不起作用:
>>> re.match(r".*^score = 0\.59$.*", r"score = 0.65\nscore = 0.59\nscore = 1.0", re.MULTILINE)
>>>
下面是我做的几个实验:
>>> import os
>>> re.match(r".*^score = 0\.59$.*", "score = 0.65{}score = 0.59{}score = 1.0".format(os.linesep, os.linesep), re.MULTILINE)
>>>
>>> re.match(r".*^score = 0\.65$.*", "score = 0.65{}score = 0.59{}score = 1.0".format(os.linesep, os.linesep), re.MULTILINE)
<_sre.SRE_Match object; span=(0, 12), match='score = 0.65'>
>>> re.match(r".*^score = 0\.65$.*", r"score = 0.65\nscore = 0.59\nscore = 1.0", re.MULTILINE)
>>>
我想我遗漏了一些相当简单的东西,但无法弄清楚。
最佳答案
问题在于,由于您使用的是原始字符串作为字符串,因此 \n
被视为...好吧 \
然后是 n
.正则表达式会理解 \n
模式中的,但不会理解输入字符串中的内容。
此外,即使那里不重要,也始终使用 flags=
关键字,因为一些正则表达式函数有一个额外的 count
参数,这可能会导致错误。
像这样:
re.match(r".*^score = 0\.65$.*", "score = 0.65\nscore = 0.59\nscore = 1.0", flags=re.MULTILINE)
<_sre.SRE_Match object; span=(0, 12), match='score = 0.65'>
正如我在评论中指出的那样,.*
需要 re.DOTALL
来匹配换行符
>>> re.match(r".*^score = \d+\.\d+$.*", "score = 0.65\nscore = 0.59\nscore = 1.0", re.MULTILINE|re.DOTALL)
<_sre.SRE_Match object; span=(0, 37), match='score = 0.65\nscore = 0.59\nscore = 1.0'>
(如 Python regex, matching pattern over multiple lines.. why isn't this working? 和 How do I match any character across multiple lines in a regular expression? 中所述,如果不是原始字符串位,这可能是重复的)
(抱歉,我的浮点正则表达式可能有点弱,你可以找到更好的)
关于python - 如何匹配多行字符串中的行首和行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53427320/
我正在尝试使用 opencsv 库将 SQL 结果集导出到以逗号分隔的 csv 文件。但是,当我将结果集传递给 writeAll 函数时,除了它生成的文件不会用新行分隔行并在记事本中打开时创建一个几乎
所以我有一个包含混合行结尾的文件。我只需要删除 linux 换行符 (LF),但只保留 Windows 行结尾 (RFLF)。任何可以做到这一点的快速 bash one liner? 最佳答案 如果要
所以我有一个包含混合行结尾的文件。我只需要删除 linux 换行符 (LF),但只保留 Windows 行结尾 (RFLF)。任何可以做到这一点的快速 bash one liner? 最佳答案 如果要
嗨,我正在尝试将行尾代码以 CSV 格式放入,以将其导入到 Excel 我尝试放入 \n、“\n”、\r、“\r”、\r\n、“\r\n”但对我没有任何作用我试图将其导入 excel 2013 我的
while ((client = accept(sock, (struct sockaddr *) &c, (socklen_t *) &clientlength)) > 0) { int h =
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在从 LINUX(Debian) 读取一个 ASCII 文件到 Python CGI 脚本中,然后通过网页对其进行编辑然后保存, 如果我使用图形文本编辑器,编辑和未编辑的文件看起来是一样的,并且格
我有一个包含 n 列 y 行二进制值的文本文件。 我正在使用 getline 提取二进制值的每一行并将它们分配给 vector : 我正在使用 getline 提取文件的每一行,其中每一行由一系列由空
这个行尾问题让我抓狂... 背景:过去,我使用的是 core.autocrlf 设置,但我发现我遇到了不同的存储库表现不佳的问题(我在 Windows 上工作,我有一些需要 LF 结尾的存储库和一些需
我们有大量在不同平台上使用 CVS 的程序员。 我们有开发人员使用带 TortoiseCVS 的 Windows(它使用 cvsNT) 我们有开发者使用 ubuntu 8.04 我们的开发人员有两个盒
目前,我正在使用以下命令来更改 dos2unix 行尾,但这是针对 file-y 文件... sed -i 's/\r//' filename 有没有办法对目录中的所有文件运行此命令? 最佳答案 fo
我正在尝试将换行符 append 到已存在的文件中,但我尝试过的所有命令都导致仅 append 到第一行。我希望文件中的输出看起来像 行1 行2 private void addToFavToFil
我正在尝试将文件中的文本读入数组,然后将每个数组索引的内容输出到输出文件。我需要读取/存储数据直到它到达行尾,此时它应该重新开始读取/存储并重新使用数组进行临时存储,只输出到输出文件。 我不能使用 g
我在 PC 上安装了 Linux Mint,然后从 Bitbucket 克隆了 git 存储库以在其上运行。经过一些更改后,我确实在我的 PhpStorm ide 中提交了。在此提交期间,git 向我
我正在阅读有关 gcc 预处理的文档,我阅读了以下句子 ( here ): If the last line of any input file lacks an end-of-line marker
我们所有的开发人员都在 Windows 机器上工作,而构建是在 Linux 上完成的。 为了符合真正的方式,我们决定标准化行结尾并遵循场景 described on GitHub . 后来发现,有时从
出于某些原因,我的一个文件包含旧样式的mac行结尾(在osx上编辑后)。这些是“CR”(回车)字符,在git diff中显示为^m。 git不理解它们是行尾代码(真的有多难?)并将整个文件解释为一行。
为什么这段代码不起作用? b if b = true 错误:未定义局部变量或方法“b” 但是这样做: if b = true b end 他们不应该是一样的吗? 最佳答案 这是一个很好的问题。
我正在 checkout 具有Linux样式行结尾的文件(仅LF char)。当我在Windows中使用TortoiseSVN checkout 文件时,它将行尾转换为Windows样式(CR + L
我有一个 Windows 文本文件,其中包含一行(以 CRLF 结尾) aline 以下是几个命令的输出: [root@panel ~]# grep aline file.txt aline [roo
我是一名优秀的程序员,十分优秀!