需要匹配文本字符串的正则表达式,其间距可能略有不同

时间:2014-07-17 19:58:37

标签: c# regex pdf aspose

Aspose从.pdf中提取文本时我需要识别字符串后面的数字" Check Number:"当Check和Number之间可能有一个空格或两个空格时。产生这个.pdf的程序似乎是变化无常的似乎有时存在变化,但总是两个单词Check和Number后跟冒号。接着是不确定数量的空格,然后是实际的支票号码。我需要一个正则表达式来插入我的aspose TextFragmentAbsorber。如果尚未明确说明,目标是捕获整个正确的支票号码。

//create TextAbsorber object to find all the phrases matching the regular expression
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); //like 1999-2000

1 个答案:

答案 0 :(得分:3)

我不知道aspose,但无论如何我都会对它进行拍摄......

首先,如果你能以某种方式使用捕获组,我想你可以简单地使用它:

new TextFragmentAbsorber(@"Check\s+Number\s*:\s*(?<number>\d{4}-\d{4})");

如果整个表达式必须与数字匹配,则必须使用lookbehind:

new TextFragmentAbsorber(@"(?<=Check Number:)\s*\d{4}-\d{4}");

此解决方案将包含支票号前的空格,并依赖于CheckNumber之间只有一个空格的事实。

如果aspose使用.NET正则表达式引擎,您可以使用可变长度的lookbehind表达式:

new TextFragmentAbsorber(@"(?<=Check\s+Number\s*:\s*)\d{4}-\d{4}");