图案不';t匹配大字符串(c#味)
我正在处理大型XML文件上的正则表达式C#flavor。通过不止一个案例,我注意到一些本应在某种“大尺寸字符串”上运行的模式根本不匹配。例如,以下字符串:图案不';t匹配大字符串(c#味),c#,xml,regex,C#,Xml,Regex,我正在处理大型XML文件上的正则表达式C#flavor。通过不止一个案例,我注意到一些本应在某种“大尺寸字符串”上运行的模式根本不匹配。例如,以下字符串: <p> <?tex xxxxxx ?> </p> <table-wrap position="float"> <table> <tbody> <tr> <td colspan="2"> <hr/> </td> &l
<p>
<?tex xxxxxx ?>
</p>
<table-wrap position="float">
<table>
<tbody>
<tr>
<td colspan="2">
<hr/>
</td>
</tr>
<tr>
<td>
<nlm.tabular>Patient</nlm.tabular>
</td>
<td>
<nlm.tabular>Patient Waiting Time</nlm.tabular>
</td>
</tr>
<tr><td
<nlm.tabular>1st patient in block <italic>B</italic>
<subscript>1</subscript>
</nlm.tabular>
</td>
<td>
<nlm.tabular>0</nlm.tabular>
</td>
</tr><tr>
<td>
<nlm.tabular>2nd patient in block <italic>B</italic><subscript>1</subscript>
</nlm.tabular>
</td>
<td>
<nlm.tabular>
<mml:math display="block">
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn></mml:mrow>
</mml:msubsup>
</mml:math></nlm.tabular>
</td>
</tr>
<tr>
<td>
<nlm.tabular>3rd patient in block <italic>B</italic>
<subscript>1</subscript>
</nlm.tabular>
</td>
<td>
<nlm.tabular<mml:math display="block">
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow>
<mml:mrow><mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn></mml:mrow></mml:msubsup></mml:math>
</nlm.tabular>
<?tex llllll?>
</td></tr>
<tr>
<td>
<nlm.tabular/>
</td>
<td>
<nlm.tabular/>
</td>
</tr>
<tr>
<td>
<nlm.tabular>
<mml:math display="block">
<mml:mo>⋮</mml:mo>
</mml:math>
</nlm.tabular>
</td>
<td>
<nlm.tabular>
<mml:math display="block">
<mml:mo>⋮</mml:mo></mml:math>
</nlm.tabular>
<?tex cccccccc?>
</td></tr>
<tr>
<td>
<nlm.tabular>
<italic>n</italic>
<subscript>1</subscript>th patient in block <italic>B</italic>
<subscript>1</subscript></nlm.tabular>
</td><td>
<nlm.tabular>
<mml:math display="block">
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow><mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow>
</mml:msubsup><mml:mo>+</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn>
<mml:mo>-</mml:mo>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:math>
</nlm.tabular>
</td>
</tr>
<tr>
<td colspan="2">
<hr/>
</td>
</tr>
<tr>
<td>
<nlm.tabular>vvvvvvvvvvvvvv</nlm.tabular>
</td>
<td>
<nlm.tabular>2222222222</nlm.tabular>
</td>
</tr>
<tr>
<td>
<nlm.tabular>Patient</nlm.tabular>
</td>
<td>
<nlm.tabular>Patient Waiting Time</nlm.tabular>
</td>
</tr>
<tr>
<td>
<nlm.tabular>1st patient in block <italic>B</italic>
<subscript>2</subscript>
</nlm.tabular>
</td>
<td>
<nlm.paragraph>0<?tex type="longcontinued-tabular" cols="xxx" width="yyy"?></nlm.paragraph>
</td>
</tr>
<tr>
<td>
<nlm.tabular>2nd patient in block <italic>B</italic>
<subscript>2</subscript>
</nlm.tabular>
</td>
<td>
<nlm.tabular>
<mml:math display="block">
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:math>
</nlm.tabular></td>
</tr>
<tr>
<td>
<nlm.tabular>3rd patient in block<italic> B</italic>
<subscript>b</subscript>
</nlm.tabular>
</td>
<td>
<nlm.tabular>
<mml:math display="block">
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi></mml:mrow><mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn></mml:mrow><mml:mrow>
<mml:mi>b</mml:mi></mml:mrow></mml:msubsup><mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</nlm.tabular>
</td>
</tr>
<tr>
<td rowspan="2">
<nlm.tabular>
<mml:math display="block">
<mml:mo>⋮</mml:mo>
</mml:math>
</nlm.tabular>
<nlm.tabular>
<italic>n</italic>
<subscript>b</subscript>th patient in block<italic> B</italic>
<subscript>b</subscript>
</nlm.tabular>
</td>
<td>
<nlm.tabular>
<mml:math display="block"><mml:mo>⋮</mml:mo>
</mml:math>
</nlm.tabular>
</td>
</tr>
<tr>
<td colspan="0">
<nlm.tabular/>
</td>
<td>
<nlm.tabular>
<mml:math display="block">
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn fontstyle="italic">2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mo>…</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mo>+</mml:mo>
<mml:mi>S</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn fontstyle="italic">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</nlm.tabular>
</td>
</tr>
<tr>
<td colspan="2"><hr/>
</td>
</tr>
</tbody>
</table>
</table-wrap>
病人
病人轮候时间
N
B区第1名患者
1.
s
1.
1.
+
s
2.
1.
+
…
+
s
N
1.
-
1.
1.
VVVVVVV
2222222222
病人
病人轮候时间
B区第一名患者
2.
0?tex type=“longcontinued tabular”cols=“xxx”width=“yyy”?
B区第二名病人
2.
s
1.
2.
B区第三名患者
B
s
1.
b+
s
2.
B
⋮
N
B区的bth患者
B
⋮
s
1.
B
+
s
2.
B
+
…
+
s
N
B
-
1.
B
我已尝试将其与以下内容相匹配:
MatchCollection mc = Regex.Matches(input , @"\<p\>\<\?tex\s*.*?\?\>\s*\<\/p\>\s*\<table\-wrap\s*.*?\>.*?\<\/table\-wrap\>);
MatchCollection mc=Regex.Matches(输入@“\\\s*\\s*\.\);
简单地说,这根本不提供任何匹配。同样的情况也发生在如此大小的字符串上
那么问题出在哪里呢?使用这个正则表达式
\s*\s*\\s*\.*?
标记之间的空格丢失了。这是一个很长的正则表达式。我会将其缩减为较小的值,例如,看看“td”是否匹配正确。在这种情况下,正则表达式中通常存在错误。使用正则表达式匹配HTML通常是一个不好的主意。沙鼠,对不起,我看不到您的正则表达式point@user1682418:弗兰基,“生意“是愚蠢的,鼓励脆弱的代码。主动使用XML解析器。用正则表达式这样做简直是愚蠢。我建议先读一下乔姆斯基的层次结构,然后再读一遍你的问题。(提示regex处理类型3,xml是类型2)。