我遇到一个小问题,无法选择字符':',该字符不在':'前后的两位数字之间。以下是示例:
user1:18 (should match)
date:2018-06-28 16:12:09 (should match : after 'date')
dueDate:28 (should match)
details:none (should match)
在演示中,我只看到了前两位。有人可以帮我吗?
答案 0 :(得分:2)
/:[^\d]|[^\d]:/
匹配任何以非数字开头或以非数字开头的冒号。这样够了吗?
答案 1 :(得分:2)
在逻辑上合适的正则表达式是
(?<!\d):|:(?!\d)
即:
后面没有数字,或者:
后面没有数字(与所有:
都匹配,除了两边都被数字包围的数字)。
看起来gsub
中的mutate
只是调用了Ruby的本机gsub
,它支持先行和先行((?! )
和(?<! )
,分别)。
答案 2 :(得分:1)
/:(?=[^\d])|(?<=[^\d]):/
使用断言,可以避免为了断言而消耗字符。