我需要一个正则表达式匹配一个9位数字但不匹配如果数字紧跟一个&amp ;.例如:
randomText123456789RandomText
将返回123456789
但是randomText123456789&RandomText
不会返回任何内容
答案 0 :(得分:1)
假设您需要Javascript样式的正则表达式,那么您需要的是/\d{9}(?!&)/
如果您需要9并且需要确保它不超过9,您也可以/(^|\D)\d{9}(?!&)/
第二个检查它是字符串的开头还是非数字,然后检查确切的9位数,如果有&数字,则拒绝接受。以下 - 字符串的结尾和除&之外的任何内容将被视为有效。
答案 1 :(得分:1)
答案 2 :(得分:0)
[0-9]{9}[^&]*$
e.g:
echo 'randomText123456789' | grep -E '[0-9]{9}[^&]*$'
randomText123456789
echo 'randomText123456789RandomText' | grep -E '[0-9]{9}[^&]*$'
randomText123456789RandomText
echo 'randomText123456789&RandomText' | grep -E '[0-9]{9}[^&]*$'
(也就是说,第三个命令不产生输出。)