Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式获取多个匹配项,以1或2位数字、点和空格开头_Regex_Vba - Fatal编程技术网

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

Regex 使用正则表达式获取多个匹配项,以1或2位数字、点和空格开头,regex,vba,Regex,Vba,我已经试了一个小时了,我自己也弄不明白,如果可以的话,请帮助我。我正在尝试将我从pdf文件复制的多行文本拆分为注释1、2、3和4,或者在1之间拆分为3个注释。和2,2。三,三。四,。也应该有效 使用该模式,我可以得到4个匹配项,但它只返回每个音符的第一行 ^\d{1,2}\.[ ][a-zA-Z](.*\n) 我试图添加一些内容,但它要么返回错误,要么不匹配,要么仅1个匹配 示例文本: 1. SOMEONE SOMEONE SOMEONE SOMEONE SOMEONE SOMEONE SO

我已经试了一个小时了,我自己也弄不明白,如果可以的话,请帮助我。我正在尝试将我从pdf文件复制的多行文本拆分为注释1、2、3和4,或者在1之间拆分为3个注释。和2,2。三,三。四,。也应该有效

使用该模式,我可以得到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多次以获取所有行

必须展开回火贪婪令牌,这是正确的方法。我不确定数字+点+空格后是否必须有一个字母,但OP可以自己计算出来。这似乎比我的答案更有效率+1@WiktorStribiżew O是的,我明白了,我忘了在它后面添加角色类。我现在已经更新了。