新函数中的字符范围错误无效

时间:2012-08-15 09:31:59

标签: regex character names

我遇到以下错误消息的问题

  

无效的正则表达式'([a-Z] *)_(。*)',原因'无效的字符范围'

因此导致错误的代码行是

if(tide=="long") names(problem) <- sub("([a-Z]*)_(.*)","\\2",problem)

因此,如果在函数中为参数潮流选择了long,则应定义问题的名称....

但是当我输入function(...,tide="long",..)时,会显示上述错误消息。

2 个答案:

答案 0 :(得分:5)

您无法使用[a-Z],因为字母顺序错误,但无论如何最好使用:

[a-zA-Z]

问题是这些范围基于表格(ASCII或Unicode),但大写字母“Z”位于小写字母“a”之前,因此范围的顺序错误。

使用[A-z]的另一个解决方案是有效范围,但有字符

[\]^_`
字母“Z”和字母“a”之间的

,因此这个范围包括您通常不想匹配的字符。

答案 1 :(得分:0)

您的问题是[a-Z]

您必须写下:[a-z][a-zA-Z]