正则表达式替换功能:在不匹配的情况下,$1 returns 整行而不是空
Regex Replace function: in cases of no match, $1 returns full line instead of null
测试link:regexr.com/42d9c
这让我发疯。
我想提取以下行中的条形码:
Ceres Juice Apricot 12 x 1lt unit: 6001240102022
Ceres Juice Cranberry& Kiwi Juice 12 x 1lt... unit:
Ceres Juice Guava 12 x 1lt.. unit:6001240222829
Ceres Juice Orange 12x1lt... unit:
Ceres Juice Medley of Fruits 1L x 12 unit: 6001240100660
应该return:
6001240102022
6001240222829
6001240100660
我正确使用了.*(\d{13}).*
然后我使用 </code> 来 return 第一场比赛 </p>
<p>但我的结果是这样的:</p>
<pre><code>6001240102022
Ceres Juice Cranberry& Kiwi Juice 12 x 1lt... unit:
6001240222829
Ceres Juice Orange 12x1lt... unit:
6001240100660
原因:
这个问题的原因是'Replace' return如果匹配组($1)中没有任何内容,那么就是原始字符串。
解决方法:
确保每一行都有一个 'match',并将其放入匹配组 1 ($1)。然后将您的实际比赛放入比赛组 2($2)。如何做到这一点?
Language/Platform:
任何。我已经尝试了所有在线 Regex 网站以及 Notepad++
您可以添加与任何字符串匹配的替代项,
.*(\d{13}).*|.*
重点是第一个选择先试,如果一行有13个连续数字,选择"win",.*
不会触发。 </code> 将保留 13 位数字。见 <a href="https://regex101.com/r/32y4RP/2" rel="nofollow noreferrer">regex demo</a>.</p>
<p>或者,可选的非捕获组与强制数字捕获组:</p>
<pre><code>(?:.*(\d{13}))?.*
这里,(?:.*(\d{13}))?
会至少执行一次(因为?
是匹配1次或0次的贪心量词),会找出13个数字放在任意0+之后的第1组换行字符以外的字符。模式末尾的 .*
将匹配该行的其余部分。
测试link:regexr.com/42d9c
这让我发疯。
我想提取以下行中的条形码:
Ceres Juice Apricot 12 x 1lt unit: 6001240102022
Ceres Juice Cranberry& Kiwi Juice 12 x 1lt... unit:
Ceres Juice Guava 12 x 1lt.. unit:6001240222829
Ceres Juice Orange 12x1lt... unit:
Ceres Juice Medley of Fruits 1L x 12 unit: 6001240100660
应该return:
6001240102022
6001240222829
6001240100660
我正确使用了.*(\d{13}).*
然后我使用 </code> 来 return 第一场比赛 </p>
<p>但我的结果是这样的:</p>
<pre><code>6001240102022
Ceres Juice Cranberry& Kiwi Juice 12 x 1lt... unit:
6001240222829
Ceres Juice Orange 12x1lt... unit:
6001240100660
原因:
这个问题的原因是'Replace' return如果匹配组($1)中没有任何内容,那么就是原始字符串。
解决方法:
确保每一行都有一个 'match',并将其放入匹配组 1 ($1)。然后将您的实际比赛放入比赛组 2($2)。如何做到这一点?
Language/Platform:
任何。我已经尝试了所有在线 Regex 网站以及 Notepad++
您可以添加与任何字符串匹配的替代项,
.*(\d{13}).*|.*
重点是第一个选择先试,如果一行有13个连续数字,选择"win",.*
不会触发。 </code> 将保留 13 位数字。见 <a href="https://regex101.com/r/32y4RP/2" rel="nofollow noreferrer">regex demo</a>.</p>
<p>或者,可选的非捕获组与强制数字捕获组:</p>
<pre><code>(?:.*(\d{13}))?.*
这里,(?:.*(\d{13}))?
会至少执行一次(因为?
是匹配1次或0次的贪心量词),会找出13个数字放在任意0+之后的第1组换行字符以外的字符。模式末尾的 .*
将匹配该行的其余部分。