正则表达式匹配正确的字符串

时间:2011-08-02 19:17:13

标签: regex

我有一个字符串:

Recent overs</b> <tt>. . . . . . <b>|</b> 3 . . 1b 4 .<b>|</b> 1 1 1 . . 4 <b>|</b> . . . 4 . .</tt></p>

这一切都在一条线上,所以我如何只提取有关球的信息,即 输出应为. . . . . . 3 . . 1b 4 . 1 1 1 . . 4 . . . 4 . .

我最接近的是[^(Recent overs|<b>|<tt>|</b>|</tt>|</p>)]+,但它与1匹配而不是1b。

3 个答案:

答案 0 :(得分:0)

尝试\s[\d\.][\w]*匹配所有数字(可能后跟单词)字符或以空格开头的点!

答案 1 :(得分:0)

完全基于您提供的示例,您可以尝试以下内容:

/(?<>)[a-z\d\s\.]+/g

备选方案,以防您的正则表达式引擎不支持lookbehinds:

/>([a-z\d\s\.]+)/g     #Matches will be in the first capture group.

然而,根据您提供的小样本,推断应该/不应该允许的规则有点难以理解,并且您的输出样本对我来说对数据结构没有多大意义。从using regex to process HTML is frequently a bad idea开始,似乎你最好使用HTML解析器。

答案 2 :(得分:0)

首先,括号[]用于创建所谓的“字符类” - 这意味着代表单个字符。您的代码有效地说不匹配这些字符:(Recntovrsbp|<>/

最好使用正则表达式删除不需要的字符串,然后更容易解析结果,如下所示:

Javascript,因为您没有指定语言

var s = "Recent overs</b> <tt>. . . . . . <b>|</b> 3 . . 1b 4 .<b>|</b> 1 1 1 . . 4 <b>|</b> . . . 4 . .</tt></p>";
s = s.replace(/(Recent overs|<[^>]+>|\|)/ig, '');

jsfiddle example

生成的's'更容易解析。

相关问题