所以,我创建了以下正则表达式,它从我的字符串中捕获了我需要的一切:
const string tag = ":59";
var result = Regex.Split(message, String.Format(":{0}[^:]?:*[^:]*", tag),RegexOptions.Multiline);
字符串遵循这个模式:
:59A:/sometext\n
somemore text\n
:71A:somemore text
我正试图抓住介于两者之间的所有东西:59A:和:71A: - 这不是固定的,因为:71A:可能是别的东西。因此,为什么我使用[^:]
修改 的
所以,只是要明确我的要求。我有一个传递给C#方法的文件(字符串),它只返回参数标记中指定的值。例如,如果文件(字符串)包含以下标记:
:20: :21: :59A: :71A:
然后我传入59然后我只需要在标签的开头之间返回所有内容:59A:和下一个标签的开始,在这个例子中是:71A:,但可能是其他的。
答案 0 :(得分:2)
您可以使用以下代码来匹配您需要的内容:
string input = ":59A:/sometext\nsomemore text\n:71A:somemore text";
string pattern = "(?<=:[^:]+:)[^:]+\n";
var m = Regex.Match(input, pattern, RegexOptions.Singleline).Value;
如果您想使用标记常量,可以使用此代码
const string tag = ":59";
string input = ":59A:/sometext\nsomemore text\n:71A:somemore text";
string pattern = String.Format("(?<={0}[^:]*:)[^:]+\n", tag);
var m = Regex.Match(input, pattern, RegexOptions.Singleline).Value;