正则表达式在$符号之间查找文本块

异步等待

我正在尝试提取美元价值之间的文本块。例如下面的文本:

$12.33  
1  
0000  
0000  
Some Text 1 line1  
Some Text 1 line2  
$0.00  
123A  
some Text 2  
$12.34  
000  
some text 3  
$90.33

我希望我的正则表达式能使我获得3个方块。

block1应该具有:

1  
0000  
0000  
Some Text1  
some Text1  

block2应该具有:

123A  
Some Text 2  

block3应该有

000  
Some Text 3  

下面是我写的正则表达式:

(\$[0-9]{1,3}\.[0-9]{1,2})(?<Text>.*?)(\$[0-9]{1,3}\.[0-9]{1,2})

正则表达式将返回我块1及块3.我怎样才能块2呢?

是否也可以立即获得文本块?

维克多·史翠比维

您可以将最后一个捕获组转换为正向超前,并添加一个替代字符串以匹配字符串结尾:

(\$[0-9]{1,3}\.[0-9]{1,2})\s*(?<Text>.*?)(?=\$[0-9]{1,3}\.[0-9]{1,2}|$)
                                         ^^^                        ^^ 

请参阅regex演示

(?=\$[0-9]{1,3}\.[0-9]{1,2}|$)正预测先行要求要么\$[0-9]{1,3}\.[0-9]{1,2}$,一到三位数字,.一个或两个数字)或(|串(的)端$)立即出现在当前的位置的右侧。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章