检测(并替换)R 中字符串中的数学符号

问题描述 投票:0回答:1

TLDR;如何检测字符串中是否存在数学符号?

我通过谷歌表单等来源或直接在电子表格中从其他人那里收集了大量文本数据。通常,进行数据输入的个人会从其他地方(例如网页或 PDF)复制文本,并且随文本一起出现数学符号。

示例字符串,其中 $\pi$ 被复制为符号。

"and π-d orbital"

R 可以完美地读取此内容,并且在 Markdown 代码中,它甚至可以以 HTML 格式完美地打印/显示它(请参阅示例)。但是我需要将此文本内容呈现为 PDF

这当然 Latex 不喜欢并抛出以下错误

! LaTeX Error: Unicode character μ (U+03BC)
               not set up for use with LaTeX.

我想编写一些 gsub/str_detect 类型代码来查找任何特殊字符,以便我可以用正确的乳胶符号替换它们:

$\pi$

我尝试

stringr::str_detect("and π-d orbital", "[a-zA-Z]", negate = TRUE)
检测非字母,但这不起作用(返回 FALSE,意味着它没有检测到非符号。

建议?有 LaTeX 解决方案吗?

r regex string latex symbols
1个回答
0
投票

设置

negate = TRUE
基本上是说,“这个字符串 not 是否包含
"[a-zA-Z]"
中的任何字符?”这是一个与您想要的不同的问题,即“该字符串是否包含
"[a-zA-Z]"
中没有的任何字符?”。要询问that问题,请在
^
内使用
[]
。请注意,您还需要包含空格、
"-"
和任何其他“可接受的”字符。

stringr::str_detect("and π-d orbital", "[^ \\-a-zA-Z]")
# TRUE
© www.soinside.com 2019 - 2024. All rights reserved.