Roc*_*nce 7 regex string r special-characters
我想在模式"|"处分割一串字符
但
unlist(strsplit("I am | very smart", " | "))
[1] "I" "am" "|" "very" "smart"
Run Code Online (Sandbox Code Playgroud)
要么
gsub(pattern="|", replacement="*", x="I am | very smart")
[1] "*I* *a*m* *|* *v*e*r*y* *s*m*a*r*t*"
Run Code Online (Sandbox Code Playgroud)
nul*_*lob 16
|是一个元字符.你需要逃避它(\\在它之前使用).
> unlist(strsplit("I am | very smart", " \\| "))
[1] "I am" "very smart"
> sub(pattern="\\|", replacement="*", x="I am | very smart")
[1] "I am * very smart"
Run Code Online (Sandbox Code Playgroud)
编辑:您需要两个反斜杠的原因是单个反斜杠前缀是为特殊符号保留的,例如\n(换行符)和\t(制表符).有关更多信息,请参阅帮助页面?regex.其他元字符是. \ | ( ) [ { ^ $ * + ?
Mar*_*rek 16
问题是默认情况下strsplit将其解释" | "为正则表达式,其中|具有特殊含义(如"或").
使用fixed参数:
unlist(strsplit("I am | very smart", " | ", fixed=TRUE))
# [1] "I am" "very smart"
Run Code Online (Sandbox Code Playgroud)
副作用是更快的计算.
stringr 替代方案:
unlist(stringr::str_split("I am | very smart", fixed(" | ")))
Run Code Online (Sandbox Code Playgroud)
如果要解析表而不是调用read.table可能是更好的选择.小小的例子:
> txt <- textConnection("I am | very smart")
> read.table(txt, sep='|')
V1 V2
1 I am very smart
Run Code Online (Sandbox Code Playgroud)
所以我建议用Rcurl获取wiki页面,用XML抓取页面的有趣部分(它有一个非常简洁的函数来解析HTML表格),如果HTML格式不可用,则调用read.table指定的sep.祝好运!
| 归档时间: |
|
| 查看次数: |
4957 次 |
| 最近记录: |