什么正则表达式只能匹配文本原始数据中具有值范围(例如20-25天)的某些行(下面的示例):
[product-1][arbitrary-text][expiry-17days]
[product-2][arbitrary-text][expiry-22days]
[product-3][arbitrary-text][expiry-29days]
[product-4][arbitrary-text][expiry-25days]
[product-5][arbitrary-text][expiry-10days]
[product-6][arbitrary-text][expiry-12days]
[product-7][arbitrary-text][expiry-20days]
[product-8][arbitrary-text][expiry-26days]
'product'
和'expiry'
文字是静态的(不会更改),而其对应的值会发生变化。
每个行/产品的'arbitrary-text'
也不同。因此,在上面的示例中,正则表达式应仅匹配/返回20-25天之间到期的行。
预期的正则表达式匹配:
[product-2][arbitrary-text][expiry-22days]
[product-4][arbitrary-text][expiry-25days]
[product-7][arbitrary-text][expiry-20days]
感谢。
答案 0 :(得分:1)
测试了这个,它按预期工作:
/[2-2]+[0-5]/g
[2-2]
将匹配2到2之间的数字..以限制通过20es范围。
[0-5]
第二个数字需要介于0和5之间,第二个数字需要介于"
{2} limit to 2 digits.
编辑:为了匹配char的整行char,这个shoudl为你做。
\[\w*\-\d*\]\s*\[\w*\-[2-2]+[0-5]\w*\]
Edit2:更新为占用任意文字...
\[(\w*-\d*)\]+\s*\[(\w*\-\w*)\]\s*\[(\w*\-[2-2]+[0-5]\w*)\]
edit3:已更新以匹配任意文本的任何字符。
\[(\w*-\d*)\]\s*\[(.*)\]\s*\[(\w*\-[2-2][0-5]\w*)\]
答案 1 :(得分:1)
请检查以下正则表达式:
( # start capturing group
.* # matches any character (except newline)
- # matches hyphen character literally
2 # matches digit 2 literally
[0-5] # matches any digit between 0 to 5
days # matches the character days literally
\] # matches the character ] literally
$ # assert position at end of a line
) # end of the capturing group
请注意使用-2[0-5]days
以确保其不匹配:
[product-7][arbitrary-text][expiry-222days] # won't match this
答案 2 :(得分:0)
.*\D2[0-5]d.*
.*
匹配所有内容。
\D
会阻止123和222之类的数字成为有效匹配。
2[0-5]
涵盖范围。
d
因此与产品编号不符。
我将示例文本粘贴到http://regexr.com
这是构建正则表达式的有用工具。
答案 3 :(得分:0)