Using stringr
我试图检测一个€
在字符串末尾添加符号,如下所示:
str_detect("my text €", "€\\b") # FALSE
为什么这不起作用?它在以下情况下工作:
str_detect("my text a", "a\\b") # TRUE - letter instead of €
grepl("€\\b", "2009in €") # TRUE - base R solution
但它也失败了perl mode:
grepl("€\\b", "2009in €", perl=TRUE) # FALSE
那么有什么问题吗€\\b
-正则表达式?正则表达式€$
在所有情况下都有效...
当您使用基本 R 正则表达式函数时,无需perl=TRUE
, TRE 正则表达式风味用来。
看起来 TRE 单词边界:
- 当非单词字符与字符串位置的末尾匹配之后使用时,并且
- 当在非单词字符之前使用时,它与字符串位置的开头匹配。
请参阅 R 测试:
> gsub("\\b\\)", "HERE", ") 2009in )")
[1] "HERE 2009in )"
> gsub("\\)\\b", "HERE", ") 2009in )")
[1] ") 2009in HERE"
>
这不是一个人的常见行为字边界在 PCRE 和 ICU 正则表达式风格中,非单词字符之前的单词边界仅在该字符前面带有单词字符时匹配,不包括字符串位置的开头(并且在非单词字符之后使用时需要出现单词字符就在单词边界之后):
三种不同的位置都可以作为单词边界:
- 如果第一个字符是单词字符,则在字符串中的第一个字符之前。
- 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
- 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)