2
我有以下的html模式。Powershell正则表达式匹配字符串,除了第一个
href="{{url}}" class="item-name prdctNm">{{name}}</a><div>
href="/drugs/sporanox-100-mg-33294" class="item-name prdctNm">Sporanox (100 Mg)</a>
href="/drugs/sporan-200-mg-34240" class="item-name prdctNm">Sporan (200 Mg)</a>
href="/drugs/spornid-500-mg-25051" class="item-name prdctNm">Spornid (500 Mg)</a>
我想要的是让产品的名称,如
Sporanox (100mg), Sporan (200 mg) and Spornid (50mg).
**
更新的解决方案
**:它几乎匹配整个页面。从页面上的first instance of
"item-name prdctNm"
到last <\a>
- 它匹配中间的所有内容。但是,我需要在其旁边匹配text between "item-name prdctNm" and tag <\a>
。
现在,它完美的作品:
$regex = [RegEx]'"item-name prdctNm"(.[^{}<>]*)</a>'
$url = ‘https://www.xxx.com/search/all?name=sporanox’
$wc = New-Object System.Net.WebClient
$content = $wc.DownloadString($url)
$regex.Matches($content) | ForEach-Object { $_.Groups[1].Value }
非常感谢所以这个工程,如果我在RegEX中包含'<>'。有什么办法 - 我可以指示我的RegEX匹配到第一个。希望你能理解我的问题。 – Yogesh 2014-12-13 11:16:32
简单,在'*'...旁边使用非贪婪或不情愿的量词'''''[RegEx]'“item-name prdctNm”>(。*?)'' – 2014-12-13 11:20:09
@Yogesh把它作为一个单独的问题。我对PowerShell的了解不多。 – 2014-12-13 11:41:03