1 <span class='Txt9Gray'>Decisions ( </span>
我正试图从此字符串中抓取1
。在1
是另一个span
之前,我不能将其用作标记,因为它可以在页面之间更改。是否有任何正则表达式可以简单地抓住1
?
单词Decisions
将始终存在。这是我找到这条线的主要方式。这是我一直试图无济于事的事情:
strRegex.Append("(?<strDecisionWins>[^<]+)[\s]*?
<span class='[\s\w\W]*'>\bDecisions\b \([\s\w\W]*?</span>")
这会在实际spans
之前抓住1
。包含上述内容的完整行是:
<span class='Txt9Gray'>(T)KOs ( </span> 66.67 <span class='Txt9Gray'>%) </span> <br /> 1 <span class='Txt9Gray'>Decisions ( </span> 33.33 <span class='Txt9Gray'>%) </span> <br />
问题在于匹配从一开始就匹配,而不是一个匹配。
答案 0 :(得分:1)
怎么样:
\d+(?=\s*\<[^\>]+\>[^\<]*\bDecisions\b)
\d+(?=\s*<[^>]+>[^<]*\bDecisions\b)
那只会选择1(而不是别的)
第二种形式适用于正则表达式处理器,无需转义<
和>
。
前瞻表达式(?=...)
保证选择一个数字\d+
,后跟一个包含文本的元素()(意思是没有开头“<
”:[^<]*
),包括决定一词。
前瞻技术可以与其他正则表达式结合使用:
\s\d(?=\s*\<[^\>]+class\s*=\s*'Txt9Gray'[^\>]*\>)
\s\d(?=\s*\<[^>]+class\s*=\s*'Txt9Gray'[^>]*>)
会抓取一个数字(假设它跟在一个空格后面),然后是一个包含属性“class='Txt9Gra
y”的元素