regex - 使用正则表达式获取以 1 或 2 位数字、点和空格开头的多个匹配项

标签 regex vba

我已经尝试了一个小时,但我自己无法解决这个问题,如果可以的话请帮助我。我试图将从 pdf 文件复制的多行文本理想地拆分为注释 1、2、3 和 4,或者 1. 和 2.、2. 和 3.、3. 和 4. 之间的 3 个注释也应该工作。

使用该模式,我可以获得 4 个匹配项,但它只返回每个注释的第一行。

 ^\d{1,2}\.[ ][a-zA-Z](.*\n)

我尝试添加一些内容,但它要么返回错误、没有匹配项,要么只返回 1 个匹配项。

示例文本:

1. SOMEONE SOMEONE SOMEONE
SOMEONE SOMEONE SOMEONE SOMEONE SOMEONE
SOMEONE SOMEONE SOMEONE SOMEONE SOMEONE
2. SOMETHING SOMETHING SOMETHING
SOMETHING SOMETHING SOMETHING SOMETHING SOMETHING SOMETHING
SOMETHING SOMETHING SOMETHING
SOMETHING SOMETHING SOMETHING
3. SOMEHOW SOMEHOW
SOMEHOW SOMEHOW SOMEHOW SOMEHOW SOMEHOW 
4. SOMEWHERE SOMEWHERE SOMEWHERE SOMEWHERE 

最佳答案

如果支持负向前瞻,您可以重复匹配所有不以 1-2 位数字、空格和字符 a-zA-Z 开头的行:

^\d{1,2}\.[ ][a-zA-Z].*(?:\r?\n(?!\d{1,2}\.[ ][a-zA-Z]).*)*

说明

  • ^ 字符串开头
  • \d{1,2}\.[ ][a-zA-Z].* 匹配 1-2 位数字、. 空格和字符 a- zA-Z 后面是该行的其余部分
  • (?: 非捕获组
    • \r?\n(?!\d{1,2}\.[ ][a-zA-Z]) 匹配换行符和该行的其余部分(如果不存在)从使用负前瞻的初始模式开始。
    • .* 如果是这种情况,则匹配整行
  • )* 关闭组并重复 0 次以上以获取所有行

Regex demo

关于regex - 使用正则表达式获取以 1 或 2 位数字、点和空格开头的多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64010790/

相关文章:

javascript - 在 JavaScript 中用转义字符替换特定字符串

python - 检测字符串中的 URL 并用 "<a href..."标记包装

c# - 正则表达式:找出我的匹配项是否在 <span> 中

c - 查找与正则表达式匹配的子字符串

vba - 克服 255 个字符。 Excel VBA 中 formulaArray 的限制

excel - 打印 VBA 时为每一行编号

vba - Excel VBA : function to turn activecell to bold

java - 除 | 之外的所有符号的正则表达式

php - MSXML2.XMLHTTP发送数据到PHP脚本

ms-access - 如何修复 "out of stack space"错误?