2017-06-12 74 views
0

的正則表達式是:正則表達式不匹配,需要幫助搞清楚爲什麼

<td class="description">(?<lineItem>[\w/ -]+)<\/td>\s+<td class="descriptionFormat">(?:[\w\$%\.,()\/ ]*)</td>\s+<td class="amount">[ ]*(?<lineValue>-?\$(?:\d{1,3},?)+\.\d{2})</td> 

忽略大小寫,多行,單行啓用。

匹配的語句的例子是:

<td class="description">Fuel Cost Adjustment</td> 
<td class="descriptionFormat">18,640 KWH at -$0.00044</td> 
<td class="amount">$-1.36</td> 

但是這一次不匹配:

<td class="description">Fuel Cost Adjustment</td> 
<td class="descriptionFormat">18,640 KWH at -$0.00044 (25/30 Days)</td> 
<td class="amount">$-6.84</td> 

我會很感激,如果有人能告訴我什麼是錯的。

謝謝!

+0

you're 100%百分比確定inputdata不會改變你有一些轉義''在你的正則表達式,而不是''<\/td>是一個錯字? –

+0

我不確定,因爲我繼承了這段代碼。它在生產中,不會經常破裂,所以我會認爲它是安全的?我會玩,看看它是否有幫助,但! –

+0

'[\ w/- ]'中的'/'也不會被轉義。它應該是'[\ w \/- ]'。 https://regex101.com/r/1gFUga/1/ –

回答

0
(<td class="description">)(?<lineItem>[\w/ -]+)<\/td>\s*<td class="descriptionFormat">(?:[\w\$%\-\.,\(\)\/ ]*)\s*</td>\s*<td class="amount">\s*(?<lineValue>-?\$(-|)(?:\d{1,3},?)+\.\d{2})</td> 

應該匹配,但你可能會考慮這個更新位,因爲HTML與正則表達式解析是相當棘手的;除非以任何方式

+0

非常感謝。初步測試似乎通過!輸入數據(如果在HTML中)不應該改變。現在已經持續了一年左右。我知道正則表達式和HTML是一個可怕的選擇,但是......我被給了一個檸檬! –