为什么这些正则表达式表现不同

时间:2012-05-08 11:01:01

标签: regex ms-access

我正在使用Access VBA(VBScript正则表达式5.5)中的正则表达式,还有一些我不理解的行为。这是正常的正则表达式行为吗?为什么呢?

输入

some html ... id="devices_internal_table">Some interestingText</a>
< more html

我需要在这里找到不同的东西,但我坚持这个:

pregexp.Pattern ="devices_table_internal([.]*?)\n<"  REM (A1)
pregexp.Pattern ="devices_table_internal([.\n]*?)<"  REM (A2)

pregexp.Pattern ="devices_table_internal(.*?)\n<"       REM (B1)
pregexp.Pattern ="devices_table_internal([.""<>\n]*?)<" REM (B2)
pregexp.Pattern ="devices_table_internal([.""<>]*?)\n<" REM (B3)
pregexp.Pattern ="devices_table_internal((.*\n)*?)<"    REM (B4)

模式A模式B没有给出任何结果。

  • 不是A1等于B1?
  • B1表示,&lt;&gt;和&#34;属于。但为什么 然后没有A2工作(但B2确实如此)?
  • 同样适用于B4 / A2:多行后跟&lt;有效,但多个[字符或换行符]后跟&lt;不是吗?

由于我需要一些不同的正则表达式,我更感兴趣解释三个奇怪的事情,而不是解决方案,以便我如何找到有趣的文本&#34; ;)

1 个答案:

答案 0 :(得分:1)

[.]是一个只包含句点的字符类。 .本身匹配任何字符。

因此,

[.]*匹配任意数量的句点(通常会写为\.*),而.*匹配任意数量的字符。

另外,请参阅stackoverflow上的the most highly-upvoted answer,了解为什么不应该尝试使用正则表达式解析HTML。