2011-09-02 52 views
2

问题:
我想使用正则表达式匹配某个xml子字符串(请参阅下面的ex。A)。问题是我无法匹配xml字符串末尾的斜杠,因为它在Regex中是一个有意义的字符。我甚至试过在我的模型插入斜线前一个反斜杠逃脱斜线(见下面的代码),但仍然不能使它工作...如何匹配xml字符串末尾的斜线?

问题:
赫克我如何使.NET正则表达式在xml字符串的末尾匹配斜杠?需要你的一些代码忍者来帮助我。在此先感谢您的帮助,我的朋友。

的输入:

<SummarySection id="_470"> 
    <Title>Statistics</Title> 
    <Para id="_331"> Note: Estimated new cases in the United States in 2010:<Reference refidx="1"/> </Para> 
</SummarySection> 

守则

// ex A: Pattern need to match (<Reference refidx="1"/>) 

string xnodeptn = @"(<Reference refidx=""[a-zA-Z0-9]""/>)"; 
Regex refregex = new Regex(xnodeptn, RegexOptions.Compiled | RegexOptions.IgnoreCase); 
MatchCollection mymatches = refregex.Matches(xe.ToString()); 
foreach (Match mch in mymatches) 
{ 
... 
} 

string xnodeptn = @"(<Reference refidx=""[a-zA-Z0-9]""\/>)"; 
+1

请不要在您的标题中添加诸如“(.NET Regex)”之类的内容。我们在[so]上使用了标签。 –

+0

嗯...这是一个很难我的朋友......也许这里有人真的很聪明可以回答它... – m0rtimer

+0

提供示例输入。 –

回答

1

@"(<Reference refidx=""[a-zA-Z0-9]""/>)"工程就好! 尝试运行此:

string text = "<SummarySection id=\"_470\"> <Title>Statistics</Title> <Para id=\"_331\"> Note: Estimated new cases in the United States in 2010: <Reference refidx=\"1\"/> </Para> <ItemizedList id=\"_332\" Style=\"bullet\"> </SummarySection>";   
string xnodeptn = @"(<Reference refidx=""[a-zA-Z0-9]""/>)"; 
Regex refregex = new Regex(xnodeptn, RegexOptions.Compiled | RegexOptions.IgnoreCase); 
MatchCollection mymatches = refregex.Matches(text); 
foreach (Match mch in mymatches) 
{ 
    MessageBox.Show(mch.ToString()); 
} 

它返回示例文本(<Reference refidx=\"1\"/>)的比赛。尝试寻找其他问题或发布更多的代码。

enter image description here

+0

谢谢** Reddog ** – TigOldBitties

+0

谢谢,我确实尝试过,但它没有返回任何匹配,mymatches.Count是0! –

+0

也许xe.toString()存在问题...我无法从代码中得知xe是什么。任何细节? – TigOldBitties

1

首先,Reddog说, “/” 是不是在正则表达式特殊字符。如果是这样,你可以用反斜杠来避开它,但你不需要。

其次,你为什么使用正则表达式来处理XML?你真的想要处理<Reference refidx="1"/><Reference refidx="1"></Reference>有什么不同吗?如果你这样做,那么就会发生一些腥意 - 你没有使用XML,因为它被设计为使用:这两个构造应该是等价的。

+0

迈克尔,谢谢,是的,它不是特殊字符,但我只是认为这样,因为它没有工作,我没有使用正则表达式来处理XML,我使用Linq XML,但我只需要在我的xhtml数据中匹配这个正则表达式。 –

0

其中一个答案是正确的,这是其他的东西导致模式不起作用,在我的XML结束标记之前没有空格,如下<Reference refidx="1"/>,但我的正则表达式模式期望在结束标记之前匹配一个空格作为如下:<Reference refidx="1" />不确定为什么会这样,但我的问题已解决。

相关问题