使用正则表达式查找/替换的好方法

时间:2014-07-16 21:03:45

标签: regex vb.net

我的OCR程序无法正确读取值。它是可预测的,所以我想在正则表达式中使用find / replace(因为这是我们已经在提取数据的方式)。

我们得到这样的命名组:(?<Foo>.*?)

我想将'N1123456'替换为'NY123456'。我们知道,当我们获得N1时,我们期待NY。

我可以尝试在同一个正则表达式中完成此操作吗?

修改:(?<Foo>.*?)

3 个答案:

答案 0 :(得分:1)

制作非数字和数字组,并在非数字组后添加Y

(\D+)(\d+)

这是demo

将其封入\b^$内以获得更高的精确度。


示例代码:

PHP:

$re = ""(\\D+)(\\d+)"";
$str = "N1123456";
$subst = '$1Y$2';

$result = preg_replace($re, $subst, $str, 1);

的Python:

import re
p = re.compile(ur'(\D+)(\d+)')
test_str = u"N1123456"
subst = u"$1Y$2"

result = re.sub(p, subst, test_str)

爪哇:

System.out.println("N1123456".replaceAll("(\\D+)(\\d+)","$1Y$2"));

答案 1 :(得分:1)

如果您希望N1始终跟随6位数字,那么您可以执行此操作:

将此代替:\bN1(\d{6})\bNY$1

这将替换所有N1后跟6位数字NY

答案 2 :(得分:0)

这就是我要做的事情:

 Dim str = Regex.Replace("N1123456", @"\bN1(\d+)", "NY$1");

查找文字的表达式为 N1 ,后跟数字:\bN1(\d+)

这些数字属于小组(1)我想在替换期间保留并附加到 NY NY$1