繁体   English   中英

我的C#正则表达式模式无法匹配标签之间的文本

[英]My C# Regex pattern fails to match text between tags

我有以下原始文本:

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

而且我对<target xml:lang="ar">和结束标签</target>之间的文本感兴趣,我意识到用Regexm匹配HTML或XML标签是一个坏主意,但是这些标签是常量,例如永远不会添加属性(它们是由某些工具生成的,并且将始终相同)

现在,我意识到有一百万种方法可以给猫换皮,而且我可以进行子字符串匹配,以在>和<之间获取文本,但这确实让我感到沮丧,即使在线正则表达式测试仪可以匹配,为什么我选择的模式不起作用诸如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);
    ...
}

谢谢大家的帮助

干杯,

西蒙

由于不赞成将Regex与Tag一起使用,因此我将回答我自己避免使用Regex,而只是使用Substring方法来回答自己的问题。

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

至于解决正则表达式匹配问题,@ nhahtdh就SingleLine选项提供的建议可以解决问题。

感谢您的评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM