我有一个字符串:
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。
答案 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, '');
生成的's'更容易解析。