我的C#Regex模式无法匹配标签之间的文本

时间:2015-10-13 03:11:50

标签: c# regex

我有以下原始文本:

<target xml:lang="ar">افصل الدائرة عن مخرج جهاز التنفس،\nواترك خراطيم المهايئ الزفيري متصلة.</target>

我对<target xml:lang="ar">和结束标记</target>之间的文字感兴趣我发现将HTML或XML标记与Regexm匹配是一个坏主意,但这些标记是常量,因为在那里永远不会添加属性(它们是由某些工具生成的,并且将始终相同)

现在我意识到有一种百万种方法可以给猫皮肤,我可以做一个子串匹配来获取&gt;之间的文字。和&lt;但令我感到非常沮丧的是,为什么我选择的模式不起作用,即使在线正则表达式测试人员确实匹配http://regexstorm.net/tester等文本。

这是我的代码:

string pattern = @"<target xml:lang=""ar"">(.*?)</target>";

string line = @"<target xml:lang=""ar"">افصل الدائرة عن مخرج جهاز التنفس،\nواترك خراطيم المهايئ الزفيري متصلة.</target>"
foreach (Match match in Regex.Matches(line, pattern))
{
    // Split the Arabic text from the xml tags
    string arabicTransMatch = match.Groups[1].Value;
    string[] xmlTags = line.Split(new string[] { arabicTransMatch }, StringSplitOptions.None);
    ...
}

感谢大家的帮助

干杯,

西蒙

1 个答案:

答案 0 :(得分:0)

由于对标签使用正则表达式的不满,我将回答我自己的问题,说明我已经避免使用正则表达式,只是使用了子串方法;

int startIndex = line.IndexOf(">") + 1;
line = line.Substring(startIndex, line.IndexOf("<", startIndex));

至于修复Regex匹配问题,@ nhahtdh给出的关于SingleLine选项的建议就行了。

感谢您的评论。