繁体   English   中英

简单的正则表达式匹配问题?

[英]Simple Regex match question?

我有一个字符串流,其中有很多这样的字符串:

  <A style="FONT-WEIGHT: bold" id=thread_title_559960       href="http://microsoft.com/forum/f80/topicName-1234/">Beautiful Topic Name</A> </DIV> 

我正在尝试以以下开头的适当链接:

style="FONT-WEIGHT: bold

因此,最后我将具有以下链接:

http://microsoft.com/forum/f80/topicName-1234/

Topic Id:
    1234

Topic Display Name:
    Beautiful Topic Name

I am using this pattern, right now, but it doesn't do it all:
    "href=\"(?<url>.*?)\">(?<title>.*?)</A>"

因为还有其他以href开头的链接。

同样使用正则表达式,我在一行字符串中添加了所有行。 正则表达式是否关心新行? IE浏览器可以继续匹配跨越多行的字符串吗?

请帮助我的模式。

在正则表达式中,点通配符与换行符匹配。 如果要匹配包括换行符在内的任何字符,请使用[^\\x00]代替. 这匹配除空字符以外的所有内容,这意味着它与所有内容匹配。

尝试这个:

<A\s+style="FONT-WEIGHT: bold"\s+id=(\S+)\s+href="([^"]*)">([^\x00]*?)</A>

如果尝试使用双引号将其分配给字符串,则需要转义引号和反斜杠。 它看起来像这样:

myVar = "<A\\s+style=\"FONT-WEIGHT: bold\"\\s+id=(\\S+)\\s+href=\"([^\"]*)\">([^\\x00]*?)</A>";

您可以制作. 通过使用RegexOptions.Singleline枚举,在模式中匹配换行符:

指定单行模式。 更改点(。)的含义,使其匹配每个字符(而不是\\ n以外的每个字符)。

因此,如果您的标题跨越多行,则启用该选项后,模式的(?<title>.*?)部分将在尝试查找匹配项的行之间继续。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM