我正在尝试获取所有href值,但无法获得正确的结果,请帮助我们。
我尝试过这种模式
(?[\ w-] +)\ s * = \ s *((?:“(?[^”>] +)))
这是链接
DataFrame.all
示例:
<a href="#" lclick="Test_Navi('page:6f66f6dd')">
<A HREF = "page:9477be:The Page "Test Detail"">
**Output**:
Match 1:
Name href
Value #
Match 2:
Name: lclick
Value: Test_Navi('page:6f66f6dd')
Match 3:
Name: HREF
Value: page:9477be:Der Dialog
**Expected Output**:
Match 1:
Name href
Value #
Match 2:
Name lclick
Value Test_Navi('page:6f66f6dd')
Match 3:
Name HREF
Value page:9477be:Der Dialog "Test Detail"
答案 0 :(得分:1)
如果您确实需要名称/值的东西,那么
而不是所有单词都使用href
[\ w-] + => href
(?<name>href)\s*=\s*((?:"(?<Value>[^">]+)))
答案 1 :(得分:1)
尽管您不应该使用正则表达式来解析/处理html,但是对于简单的文本提取,您可以使用此正则表达式从group1中获取所需的匹配项,
\w+\s*=\s*"([^=]*)"
说明:
\w+
-匹配一个或多个单词\w
([a-zA-Z0-9_]
)字符\s*=\s*
-匹配=
,周围有可选的空白字符"([^=]*)"
-这是正则表达式的关键部分,可将其与其他答案区分开来,并使其按预期工作。您要捕获的值中也包含双引号,因此无法使用[^"]+
,而使用".*"
会捕获更多的值。这里的关键是您所有的键值对都用=
隔开,因此值不能包含此字符,因为我使用[^=]*
字符来捕获值,所以贪婪地使用里面存在的双引号也会被捕获,并期望最后一个是"([^=]*)"
所在的地方,并按需要完成工作。正则表达式的扩展版本就是这个
(?<Name>[\w-]+)\s*=\s*((?:"(?<Value>[^=]+)"))