c# - 在 C# 中使用正则表达式查找和替换字符串中的 *

标签 c# regex

我有一个包含许多描述字符串(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
    });
});

DEMO

老实说,这只是基于您提供的内容,并不是 100% 确定您要做什么。

关于c# - 在 C# 中使用正则表达式查找和替换字符串中的 *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5467486/

相关文章:

c# - 如何获取项目文件夹中文件的相对路径?

c# - 如何将泛型约束为枚举类型?

c# - 在 C# 中使用其他变量字符串访问变量?评价?

Javascript - 使用全局修饰符删除最后一个不起作用

java - 匹配字符串中最后一次出现的单词

c# - 发出HTTP POST请求时捕获ElasticSearch异常

c# - 如何在 ObjectListView 中获取选定对象的值

C# 正则表达式获取 4 到 10 个字符之间的单词

Discover 信用卡的正则表达式

javascript - 如何在某个字符之前和之后应用正则表达式