我在查找正则表达式时遇到问题。我有一些文字,可能除以一些xml。例如:
<root>
<text>Thi</text>
<text>s is ju</text>
<text><bold>s</bold></text>
<text>t a tes</text>
<text><italic>t</italic></text>
</root>
我想搜索单词&#34;只是&#34;在xml中需要结果
ju</text>
<text><bold>s</bold></text>
<text>t
有没有可能用正则表达式得到这个结果?
顺便说一句:我已经有了正则表达式来从xml中获取纯文本,它是(在C#-Syntax中):
string plaintext = new Regex(@"\<[^\<]*\>").Replace(xmlstring, string.Empty);
这个找到每个&#34;&lt;&#34;到&#34;&gt;&#34;中间的一切(*)但不是另一个&#34;&lt;&#34;并用string.Empty替换它。所以我得到了纯文本,可以搜索我的&#34;只是&#34;,但结果只是&#34;只是&#34;,而不是xml介于......
有人有想法吗?
答案 0 :(得分:1)
如果您使用单行XML(没有空格),则可以通过just
(?:<[^>]*>)*
个正则表达式部分中的j(?:<[^>]*>)*u(?:<[^>]*>)*s(?:<[^>]*>)*t
分割字母来创建正则表达式。例如:
(?! )(?:<[^>]*>\s*)*(?<! )
如果您仍需要处理多行xml,可以按j(?! )(?:<[^>]*>\s*)*(?<! )u(?! )(?:<[^>]*>\s*)*(?<! )s(?! )(?:<[^>]*>\s*)*(?<! )t
正则表达式拆分字母。它将允许XML标记之间的空格,但不允许在字母之前或之后留出空格。
{{1}}
答案 1 :(得分:1)
最好不要在xml上使用regexp。只是不要。
根据您的任务,在您要查找的每个字符串之后,您可以期待任何xml标记。所以基本上你需要在每个字母之后插入'maybetag'正则表达式部分 - 就像这样:
j(\<[^\<]*?\>\s*)*u(\<[^\<]*?\>\s*)*s(\<[^\<]*?\>\s*)*t(\<[^\<]*?\>\s*)*
答案 2 :(得分:1)
试试这个:
/j(<[^>]+>)*u(<[^>]+>)*s(<[^>]+>)*t/