我有一个字符向量,它是一些PDF抓取文件pdftotext(命令行工具).
一切都(幸福地)很好地排成一列.但是,向量中充斥着一种空格,这些空格使我的正则表达式无效:
> test
[1] "Address:" "Clinic Information:" "Store " "351 South Washburn" "Aurora Quick Care"
[6] "Info" "St. Oshkosh, WI 54904" "Phone: 920?232?0718" "Pewaukee"
> grepl("[0-9]+ [A-Za-z ]+",test)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> dput(test)
c("Address:", "Clinic Information:", "Store ", "351 South Washburn",
"Aurora Quick Care", "Info", "St. Oshkosh, WI 54904", "Phone: 920?232?0718",
"Pewaukee")
> test.pasted <- c("Address:", "Clinic Information:", "Store ", "351 South Washburn",
+ "Aurora Quick Care", "Info", "St. Oshkosh, WI 54904", "Phone: 920?232?0718",
+ "Pewaukee")
> grepl("[0-9]+ [A-Za-z ]+",test.pasted)
[1] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
> Encoding(test)
[1] "unknown" "unknown" "unknown" "unknown" "unknown" "unknown" "unknown" "unknown" "unknown"
> Encoding(test.pasted)
[1] "unknown" "unknown" "unknown" "unknown" "unknown" "unknown" "unknown" "UTF-8" "unknown"
Run Code Online (Sandbox Code Playgroud)
显然,有一些字符未被分配dput,如下面的问题:
我无法复制/粘贴整个矢量....如何搜索并销毁这个非空白空格?
编辑
很明显,我甚至都不清楚,因为答案到处都是.这是一个更简单的测试用例:
> grepl("Clinic Information:", test[2])
[1] FALSE
> grepl("Clinic Information:", "Clinic Information:") # Where the second phrase is copy/pasted from the screen
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
在屏幕和dput输出中打印的单词"Clinic"和"Information"之间有一个空格,但字符串中的任何内容都不是标准空间.我的目标是消除这个,所以我可以正确地将这个元素弄出来.
将我的评论升级为答案:
您的字符串包含一个不间断的空格(U + 00A0),当您粘贴它时,它会转换为正常空格.使用perl风格的正则表达式可以很容易地匹配Unicode中所有奇怪的类似空格的字符:
grepl("[0-9]+\\p{Zs}[A-Za-z ]+", test, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
perl regexp语法是\p{categoryName},额外的反斜杠是包含反斜杠的字符串语法的一部分,"Zs"是"Separator"Unicode类别,"space"子类别.只有U + 00A0字符的简单方法是
grepl("[0-9]+[ \\xa0][A-Za-z ]+", test)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |