问题标签 [grepl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
144 浏览

regex - 用于捕获时间的正则表达式在冒号前没有两位数,只有一位

我的正则表达式似乎应该可以工作,但是却返回了意外的结果。

我正在使用 R。如果您不使用这些,请不要担心,我认为这与其他一些正则表达式非常相似。并且 R 文档说 {n,m} 语法应该有效:“{n,m} 前面的项目至少匹配 n 次,但不超过 m 次。”

我想从一些自由文本注释中捕捉药物给药的时间(例如上午 10 点 47 分、上午 3 点 04 分)。

我得到 3:04 AM 就好了,但是对于 10:47 AM,我得到了 0:47 AM。我现在已经尝试了很多不同的东西,但由于某种原因无法让第一个数字过来。任何想法我做错了什么?

0 投票
1 回答
1082 浏览

r - R grepl - 匹配模式到字符串

我在 R 中使用 grepl() 将模式与字符串匹配。

我需要将多个字符串匹配到一个公共字符串,如果它们都匹配,则返回 TRUE。

例如:

我想看看变量 b 中的所有单词是否也在变量 a 中。

我不能只使用 grepl(b, a) 因为模式(空格)不一样。

看起来应该是这样的:

或者

但两者都不起作用。我需要将 b 中的每个单词与 a 进行比较。在这种情况下,由于所有单词都存在于 a 中,它应该返回 TRUE。

谢谢!

0 投票
3 回答
142 浏览

regex - 计算一个列表中出现在字符串中的单词数

我在字符向量中有一组独特的单词(已被“提取”),我想知道其中有多少出现在字符串中。

这是我到目前为止所拥有的:

我知道下一步可能涉及grepl("\\bword\\b,value")或使用一些正则表达式,但我不确定在这种情况下最快的选项是什么。

这是我的标准:

  • 我必须这样做很多次,所以尽可能快是一个问题。
  • 它应该匹配整个单词(“es”不应该匹配“test”)。

任何朝着正确方向的推动都会很棒。

0 投票
1 回答
81 浏览

r - R中的grepl:尽管词内破折号但虚假匹配

下面是一个最小的可重现示例:

最后一个命令返回 c(TRUE,TRUE),我期望 c(TRUE,FALSE)。关于如何实现这一目标的任何想法?这个想法是应该检测到文本中存在关键字“skill-saw”,而不是关键字“saw Blade”......

非常感谢您的帮助!

0 投票
1 回答
122 浏览

regex - R中的grepl:匹配被词内破折号阻碍

我有 3 个词:x、y 和 z,从中可以构建两个复合词:xy 和 yz。

在自然出现的文本中,x、y 和 z 可以相互跟随。在第一种情况下,我有:

我想检测:“xy”而不是“y z”。如果我做:

我得到 c(TRUE,TRUE)。换句话说,grepl 没有捕捉到 y 已经通过单词内破折号链接到 x 的事实,因此,“y z”实际上并不存在于文本中。因此,在文本开头添加空格后,我使用了lookbehind:

这一次,我得到了我想要的:c(TRUE, FALSE)。现在,在第二种情况下,我有:

我想检测“yz”而不是“x y”。这次采用了一种具有前瞻性的对称方法,我尝试了:

但是这次我得到了 c(FALSE,FALSE) 而不是 c(FALSE,TRUE) ,正如我所期望的那样。第一个位置的 FALSE 是预期的(前瞻检测到 y 之后存在单词内破折号并阻止与“x y”匹配)。但我真的不明白是什么阻止了与“yz”的匹配。

非常感谢您的帮助,

0 投票
3 回答
2590 浏览

r - 在 R 中使用 grepl 匹配字符串

我有一个帧数据“testData”如下:

而且我还有另一个帧数据“addr”如下:

那么我如何使用grepl,sapply或 R 中的任何其他有用函数将数据生成如下:

0 投票
1 回答
3661 浏览

regex - r grepl 搜索变量中的多个模式

我正在尝试搜索字符串变量,每次找到确定的模式时,搜索功能都会告诉我 TRUE。我正在使用 grepl 来查找匹配项:

该模式需要从几个单词构建,而这些单词又是从 csv 文件中捕获的。

我想我在构建模式时做错了,但我找不到错误。

下面有一个虚构的例子

最终的 grepl 没有找到任何匹配项

有什么建议吗?

提前致谢

0 投票
2 回答
27485 浏览

r - R how to use grep in if statement

In R I want to do a like in an if statement like the example below where I'm searching for any colors in the mix$color column that contain the word red and setting a new variable in the mix dataframe to the color red.

mix$newcolor <- if(grep("Red",mix$color) "red"

And here's some sample data for the dataframe mix:

AliceBlue BlueViolet DarkRed MediumVioletRed

I'm getting this error message:

Warning message: In if (grepl("deep red", mix$color) == TRUE) "red" : the condition has length > 1 and only the first element will be used

I think that grepl should be returning a TRUE or FALSE boolean value so that should be acceptable but I'm missing something (or a lot).

Thanks for your help.

0 投票
0 回答
109 浏览

r - r 有多少 OR 项目支持 grepl?

我需要使用 grepl 将搜索构建到字符串变量中。问题是我有很多模式要搜索,而且这些模式可能会随着时间的推移而增长。所以问题是:我可以在一个 grepl 句子中放入多少个模式?实际上,我正在使用一个单独的 csv 文件来存储模式,每个模式如下所示:

提前感谢奥斯卡

0 投票
1 回答
98 浏览

r - 嵌套 if else 用于字符串搜索

可重现的数据集

我有一个数据集data1,如下图

我还有另一个数据集data2,如下图

如果语句应检查 Data2 描述是否在 data2$Description Chiquita mazamorra中包含此字符,如果是,则检查 Data2$Actual > Data1$Max。如果是,那么结果 == 好,否则小。请注意,在 Chiquita mazamorra 之后可能还有其他字符,例如Chiquita mazamorra 1,2h..这没关系,但不是Chiquita mazamorra Buro

同样,另一个 ifelse 应检查 Data2 描述是否包含Chiquita,如果是,则检查 Data2$Actual > Data1$Max。如果是,那么结果 == 好,否则小。在 Chiquita 之后可能还有其他字符,例如Chiquita 24hChiquita AM 2F,这些都可以,但不是Chiquita miniChiquita Oriville

这是最终所需的输出(data2)

我知道这可以使用 grepl 和 ifelse 语句的组合来完成,我不是很自信?也许有更好的方法可以做到这一点,我不知道,我很困惑。需要帮忙。