繁体   English   中英

正则表达式将每行捕获到唯一的捕获组,其中行数不同,并且某些数据可能丢失

[英]Regex to Capture Each Line to Unique Capture Group, Where Number of Lines Varies, and Some Data may be Missing

我正在寻找一个正则表达式,它将每一行(不包括行标题冒号和空格)捕获到一个单独的组。 我在 Mac 应用程序键盘大师中使用这个正则表达式。

这就是我所拥有的: https://regex101.com/r/pxVzPM/1

我当前的正则表达式捕获了整行,但我最近决定添加数据的“名称”,例如“前缀:”,所以我只想捕获数据本身。 我尝试更改捕获,以便它忽略我想要的数据之前的所有内容,如下所示:

\R?\h*:\ ((?:.+)?)

但是当我重复这个时,正则表达式不再起作用。

此外,如果可能的话,最好将其作为重复捕获组,而不必复制代码 11 次。

注意事项:

  1. 有时,字段数据可能为空白,如“开始:” - 见下文。 “开始:”会在那里,但实际的“开始”数据可能不会。 但这些数据中的任何一个“可能”都是空白的。
  2. 我需要一个正则表达式,它适用于最少有 4 或 5 行的数据,最多可达“现有行数”。 很可能这将少于 20 行。
  3. 捕获的数据可以是“任何东西”,从文本到数字再到冒号等。

这是我正在搜索的数据:

Prefix: 123
Name: Testing
File: 12345
Description: This field
Duration: 01:32
Start: 
Volume: 200
Tempo: 120BPM
Referencing: Another Track
Original: This One
Notes: This is a test project

所以我试图捕捉到这一点:

123
Testing
12345
This Field
…etc.

进入捕获组:

第 1 组将是:123

第 2 组是:测试

等等...

任何帮助深表感谢!

谢谢!

那么:\s*(.*)呢?

这将开始寻找一个colon ,然后是一个可选的whitespace ,并捕获空格之后的所有内容,直到组中的行尾。

您可以在此处查看测试数据的结果: regex101.com

编辑:
对于包含的空白数据,您可以使用以下数据: :(.*)但您必须修剪所有结果以删除前导空格

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM