2017-06-12 81 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是一个可怕的选择,但是......我被给了一个柠檬! –