正则表达式Tweek

Tre*_*iel 2 c# regex visual-studio

任何人都可以帮助我更接近我想要获得的结果吗?

我在扫描图像后将此字符串作为OCR结果返回:

7915-03226E3058-089179祝你好运3月04日星期三你的号码A06 09 26 40 43 45 B 06 14 18 28 43 48 C 02 16 22 34 39 42 1111111 II 111111111111111111111 3次x£1.00表1平局= E 3.00上周,有超过70万的LOTTO获奖者!7915-032268058-089179 013779期限.46377201 E - •我填写此框以使票证无效

我试图拔出值"A06 09 26 40 43 45","B 06 14 18 28 43 48""C 02 16 22 34 39 42"

坦白地说,我不需要"A","B""C".我只需要每个后面的12个数字.

我有正则表达式

[A-Z](\W*\d{2}){6}
Run Code Online (Sandbox Code Playgroud)

但是这可以从中找到我不想要的额外信息:http://regexr.com?372b7

谁能建议如何靠近?有没有更好的方法来尝试获取票号?

Dal*_*las 5

你的问题主要围绕\W*,这允许任何数字(包括0)的任何非单词字符.因此,基本上111111111111将匹配您的捕获组正则表达式和您的整个正则表达式,如果前面有大写字母.看起来你想要用空格分隔的2位数对,你可以这样做:

[A-Z]\s*(\d{2}\s+){6}
Run Code Online (Sandbox Code Playgroud)

演示

在此输入图像描述

\s+确保有ATLEAST一个空格字符分隔对.


虽然上面(与原文一样)只会将最后一对数字放在捕获中.要修复它并忽略尾随空格,可以这样做:

[A-Z]\s*(\d{2}(?:\s+\d{2}){5})
Run Code Online (Sandbox Code Playgroud)

演示

在此输入图像描述

请注意,(?...)正在创建一个非捕获组,以便我们可以重复执行而不会弄乱捕获组.现在,这将把所有6对数字放入捕获组1(这将是唯一的额外捕获).另外,对于原因\s*后,[A-Z]是它似乎有前导字符后可选空白.

  • 有趣!哪个工具生成此图表? (3认同)