我想选择以”开头的单词,在行内的某个地方。
例子
30 8 * * * /root/something > /dev/null 2>&1
30 8 * * * usr/bin/php /home/php/script/run.php
我想配合
/root/something
/home/php/script/run.php
我的regex根本不工作(使用Ansible)。
regex_findall('\\s(/.*)')
并给出这样的输出
/root/something > /dev/null 2>&1
/home/php/script/run.php"
解决方案:
你可以使用
r'\s(/\S+).*'
见 搜索引擎演示
它将匹配一个空格(\s
),然后将捕获 /
然后是任何1个以上的非空格字符(\S+
)进入第1组,然后将其余的线路(用 .*
).
另一个想法:匹配序列 /
然后是1个以上的字符,除了 /
如果不以 /dev/null
:
r'(?<!\S)(?!/dev/null)(?:/[^/\s]+)+'
这将匹配
(?<!\S)
– 空格或字符串的开头应该紧靠左边出现。(?!/dev/null)
– 没有/dev/null
允许紧靠当前位置的右边。(?:/[^/\s]+)+
– 出现1次或以上的/
– a/
烧焦[^/\s]+
– 1+ 字符以外的字符/
和whitespace。
见 这个regex演示.