我有一个包含许多描述字符串(1000 个)的大型 X12 EDI 文件。这些描述字符串可以在具有相同分隔符 *
的其他字符串之前、之后和之间找到。
所有描述字符串都以标签REF*TC**
开始,以字符~
结束。
我需要找到并替换这两个标签之间出现的所有 *
,而不触及其他字符串,在本例中为 DTM 字符串。
我包含了两个描述字符串的示例,因为它们可以在文件中找到。如您所见,第一个描述字符串包含我需要替换的 *
,第二个描述字符串不包含任何需要替换的 *
.
~REF*TC**BLAH*BLAH*~REF*TC**BLAHBLAH~REF*TC***BLAH~DTM*010*20110329~
期望的输出:
~REF*TC**BLAHBLAH~REF*TC**BLAHBLAH~REF*TC**BLAH~DTM*010*20110329~
我正在使用 C#
这就是我目前所拥有的。
查找表达式:REF\*TC\*\*(.{0,}?)(\*+)(.{0,}?)(\**)(.{0,}? )(\**)~
最佳答案
这是我想出的:
var str = "~REF*TC**BLAH*BLAH*~REF*TC**BLAHBLAH~REF*TC***BLAH~DTM*010*20110329~";
var result = (new Regex(@"(?<pre>REF\*TC\*\*)(?<text>.*?)(?<post>~)")).Replace(str,(m) =>
{
return String.Join(String.Empty,new String[]{
m.Groups["pre"].Value,
m.Groups["text"].Value.Replace("*",String.Empty),
m.Groups["post"].Value
});
});
老实说,这只是基于您提供的内容,并不是 100% 确定您要做什么。
关于c# - 在 C# 中使用正则表达式查找和替换字符串中的 *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5467486/