Regexp提取“;“数字”;带可选前缀或在行首
我想从行中提取“编号”(可以是包裹号、发票号等)。它只是非空白字符(例如:Regexp提取“;“数字”;带可选前缀或在行首,regex,regex-lookarounds,regex-greedy,Regex,Regex Lookarounds,Regex Greedy,我想从行中提取“编号”(可以是包裹号、发票号等)。它只是非空白字符(例如:123,ABC,ABC,ABC123,ABC-123,X-ABC/123/456-简单地说就是\s+regexp) 我有可以包含“数字”的行。有两种可能的情况: 在行的开头(非空白字符的第一个字符串) 在行的中间,但标有前缀编号: 示例行: ABC123 bla bla Number: ABC123 bla bla Some words 123 Number: ABC123 bla bla 我想从每个示例行中提取“数字”
123
,ABC
,ABC
,ABC123
,ABC-123
,X-ABC/123/456
-简单地说就是\s+
regexp)
我有可以包含“数字”的行。有两种可能的情况:
编号:
ABC123 bla bla
Number: ABC123 bla bla
Some words 123 Number: ABC123 bla bla
我想从每个示例行中提取“数字”:ABC123
我知道如何为第二种情况编写regexp(示例2和3行):
(?:Number:)(\S+)
(前缀为Number:
的非捕获组和非空白字符的捕获组)
但第一个病例怎么办?
我尝试的是:
(?:编号:)(\S+)
Some
,而不是数字ABC123
(?:^(\S+))|(?:(?:数字:)(\S+)
一些
。这更糟糕,因为我得到了Number:
Number:
以消除上一步的第二个问题:(?:^(?!Number:)(\S+)|(?:(?:Number:)(\S+)
演示: 问题有点类似于:您可以使用
(?:.*编号:\s*|^)(\s+)
看
细节
-两种选择之一:(?:.*编号:\s*| ^)
-除换行符以外的任何零个或多个字符,尽可能多,*Number:\s*
和零个或多个空格(如果需要保持在线,请将编号:
替换为\s
或[^\s\r\n]
\h
(如果支持的话)[\p{Zs}\t]
-或|
-线路起点(在类似PCR0的发动机中使用^
选项)m
-组1:任何一个或多个非空白字符(\S+)
(?:.*编号:\s*|^)(\s+)
看
细节
-两种选择之一:(?:.*编号:\s*| ^)
-除换行符以外的任何零个或多个字符,尽可能多,*Number:\s*
和零个或多个空格(如果需要保持在线,请将编号:
替换为\s
或[^\s\r\n]
\h
(如果支持的话)[\p{Zs}\t]
-或|
-线路起点(在类似PCR0的发动机中使用^
选项)m
-组1:任何一个或多个非空白字符(\S+)
- 我会使用:
^(?:.*?Number: )?(\S+)
其中,前导文本和“编号:”都是可选的。在线查看
-起锚线^
-打开非捕获组:(?:
-0个以上字符(惰性),换行符除外*?
-字面意思是“编号:”编号:
-关闭非捕获组并将其设置为可选)?
-用于捕获1+个非空白字符的语法。我想说也许你想用(\S+)
来代替,或者更精确一些(\w+)
- 我会使用:
^(?:.*?Number: )?(\S+)
其中,前导文本和“编号:”都是可选的。在线查看
-起锚线^
-打开非捕获组:(?:
-0个以上字符(惰性),换行符除外*?
-字面意思是“编号:”编号:
-关闭非捕获组并将其设置为可选)?
-用于捕获1+个非空白字符的语法。我想说也许你想用(\S+)
来代替,或者更精确一些(\w+)