我的OCR程序无法正确读取值。它是可预测的,所以我想在正则表达式中使用find / replace(因为这是我们已经在提取数据的方式)。
我们得到这样的命名组:(?<Foo>.*?)
我想将'N1123456'替换为'NY123456'。我们知道,当我们获得N1时,我们期待NY。
我可以尝试在同一个正则表达式中完成此操作吗?
修改:(?<Foo>.*?)
答案 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})\b
:NY$1
。
这将替换所有N1
后跟6位数字NY
。
答案 2 :(得分:0)
这就是我要做的事情:
Dim str = Regex.Replace("N1123456", @"\bN1(\d+)", "NY$1");
查找文字的表达式为 N1 ,后跟数字:\bN1(\d+)
。
这些数字属于小组(1)我想在替换期间保留并附加到 NY :NY$1