Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于关闭未关闭标记的正则表达式_C#_Regex - Fatal编程技术网

C# 用于关闭未关闭标记的正则表达式

C# 用于关闭未关闭标记的正则表达式,c#,regex,C#,Regex,我从轮询提供程序收到了一些无效的XML数据,希望在处理之前清除几个未关闭的标记 当前的数据如下所示: <questions> <question number="1"> <title>What is your name?</title> <answer>John Doe<answer> <!-- this is the problem --> </question> <question numb

我从轮询提供程序收到了一些无效的XML数据,希望在处理之前清除几个未关闭的标记

当前的数据如下所示:

<questions>
<question number="1">
<title>What is your name?</title>
<answer>John Doe<answer> <!-- this is the problem -->
</question>
<question number="2">
...
</question>

你的名字叫什么?
无名氏
...
正则表达式有没有办法清除这个标记并关闭它

我有这样一个:
“*?(?)”
来查找出现的情况,但是我如何对该
命名组进行特定替换

对于这个非常基本的问题,我感到抱歉,但我对我的正则表达式有点纠结

谢谢


Hal

如果问题总是缺少一个/(也就是说,有一个匹配的标记,但它当前不是一个结束标记),您可以执行以下操作:

<questions>
<question number="1">
<title>What is your name?</title>
<answer>John Doe<answer> <!-- this is the problem -->
</question>
<question number="2">
...
</question>

查找:
]+)>([^以编程方式修复XML验证中的人为错误会带来麻烦。在极端情况下,您最好撤消所有XML验证。仅举一个示例:

<questions> 
<question number="1"> 
<title>What is your name?</title> 
<answer>John Doe<answer> 
<!-- this is the problem --> </question> <question number="2"> ... </question>

你的名字叫什么?
无名氏
... 
修理

<answer>John Doe</answer> 
johndoe
或者

johndoe
或者

johndoe

你能看到它的发展方向吗?

Um…不。
asda
(即:请不要推荐正则表达式作为修复XML的工具。它不起作用。它永远不会起作用。)修改为更严格的正则表达式。在有限的情况下,它可以起作用。这取决于你的问题有多普遍。“修复XML”从一般意义上讲,这是一个更复杂的问题,正则表达式通常不适合,是的。但有时问题没有一般情况那么复杂。+1。现在看起来不错。(除了
\1
,替换字符串中的
\2
应该是
$1
$2
)当然,直到你开始的简单测试用例在3个月后引入了一个几乎无法追踪的bug,因为没有例外。用户不理解“系统限制”这个词。这个民意测验提供商以提供糟糕的XML为生?帮他们一个忙,告诉他们他们有一个bug,他们必须修复它(最好在他们因吐垃圾而获得报酬之前)。另外,仅供参考,一般来说,正则表达式不能用于处理XML,因为XML不是一种正则语言(在cs术语中).谢谢-我看得越多,想法就越糟糕(使用正则表达式修复)至于民意调查提供者,它是PrdPoad,但他们为我们做了一个习惯性的改变,并引入了错误。通常,它已经死了。他们很快就解决了这个问题,我们只是有一个重要的数字进入了我们的队列。请考虑通过把它通过整洁来修复XML,而不是滚动自己的例程。只是想知道标签是否。你必须重复地关闭它——如果没有,你可以手动完成。我最后只是简单地处理了包含错误的文档中的特定问题。
<answer>John Doe</answer><answer> </answer>