标签: multiple-matches

使用dplyr contains()基于多个字符串选择列

我想根据名称使用正则表达式选择多个列.我正在尝试使用dplyr包的管道语法.我检查了其他主题,但只找到了关于单个字符串的答案.

基数R:

library(dplyr)    
mtcars[grepl('m|ar', names(mtcars))]
###                      mpg am gear carb
### Mazda RX4           21.0  1    4    4
### Mazda RX4 Wag       21.0  1    4    4
Run Code Online (Sandbox Code Playgroud)

但是它不适用于select/contains方式:

mtcars %>% select(contains('m|ar'))
### data frame with 0 columns and 32 rows
Run Code Online (Sandbox Code Playgroud)

怎么了?

regex r matching multiple-matches dplyr

38
推荐指数
2
解决办法
2万
查看次数

Python正则表达式匹配多次

我正在尝试将模式与可能具有多个模式实例的字符串进行匹配.我需要单独的每个实例.re.findall() 应该这样做,但我不知道我做错了什么.

pattern = re.compile('/review: (http://url.com/(\d+)\s?)+/', re.IGNORECASE)
match = pattern.findall('this is the message. review: http://url.com/123 http://url.com/456')
Run Code Online (Sandbox Code Playgroud)

我需要" http://url.com/123 ",http://url.com/456和两个数123 456是不同的元素match列表.

我也尝试'/review: ((http://url.com/(\d+)\s?)+)/'过这种模式,但没有运气.

python regex multiple-matches

13
推荐指数
2
解决办法
3万
查看次数

如何在Java中获得多个正则表达式匹配?

如何在Java中找到与正则表达式匹配的所有子字符串?(类似于.Net中的Regex.Matches)

java regex multiple-matches

11
推荐指数
2
解决办法
1万
查看次数

下拉Javascript错误:对象不支持属性或方法'匹配'

我正在使用以下JavaScript下拉列表,除了新的Windows Edge之外,它适用于所有浏览器.

它显示以下错误:

SCRIPT438:对象不支持属性或方法'匹配'

脚本:

/* When the user clicks on the button, 
toggle between hiding and showing the dropdown content */
function myFunction() {
    document.getElementById("myDropdown").classList.toggle("show");
}

// Close the dropdown menu if the user clicks outside of it
window.onclick = function(event) {
  if (!event.target.matches('.dropbtn')) {

    var dropdowns = document.getElementsByClassName("dropdown-content");
    var i;
    for (i = 0; i < dropdowns.length; i++) {
      var openDropdown = dropdowns[i];
      if (openDropdown.classList.contains('show')) {
        openDropdown.classList.remove('show');
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

得到了以下脚本:http://www.w3schools.com/howto/howto_js_dropdown.asp,我认为它与所有平台兼容.现在我已经实现了它,并在Edge中遇到了问题.

javascript methods jquery multiple-matches drop-down-menu

7
推荐指数
2
解决办法
7007
查看次数

在groovy中使用正则表达式替换String中的所有匹配项

当我的代码只有一次出现时:

def result = "Text 1,1"
def matches = (result =~ /^.+\s([0-9],[0-9])$/ ).with { m -> m.matches() ? result.replace(/${m[ 0 ][ 1 ]}/, 'X'+m[ 0 ][ 1 ]+'X') : result }
assert "Text X,X" == matches
Run Code Online (Sandbox Code Playgroud)

如果我的String包含多次出现,我该怎么办?

def result = "aaaa Text 1,1 Text 2,2 ssss"
Run Code Online (Sandbox Code Playgroud)

谢谢

regex groovy multiple-matches

6
推荐指数
1
解决办法
9014
查看次数

使用Perl中的regex在字符串中获取多个匹配项

在阅读了这个类似的问题并多次尝试我的代码之后,我继续获得相同的不良输出.

让我们假设我正在搜索的字符串是"我昨天看到了wilma".正则表达式应该捕获每个单词后跟一个'a'及其可选的 5个后面的字符或空格.

我写的代码如下:

$_ = "I saw wilma yesterday";

if (@m = /(\w+)a(.{5,})?/g){
    print "found " . @m . " matches\n";

    foreach(@m){
        print "\t\"$_\"\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我继续获得以下输出:

found 2 matches
    "s"
    "w wilma yesterday"
Run Code Online (Sandbox Code Playgroud)

虽然我希望得到以下一个:

found 3 matches:
    "saw wil"
    "wilma yest"
    "yesterday"
Run Code Online (Sandbox Code Playgroud)

直到我发现里面的返回值@m$1$2,你可以注意到.

现在,由于/g标志已打开,我认为问题不在于正则表达式,我怎样才能获得所需的输出?

regex perl multiple-matches

5
推荐指数
1
解决办法
390
查看次数

在python中匹配多个正则表达式的文本

我有一个包含11个文件的文本语料库,每个文件大约有190000行.我有10个字符串,其中一个或多个可能出现在上述语料库的每一行中.

当我遇到10个字符串中的任何一个时,我需要记录分别出现在该行中的字符串.循环通过正则表达式为每一行和标记它的蛮力方式需要很长时间.有没有一种有效的方法呢?

我发现了一个帖子(使用Python匹配多个正则表达式的行),它提供了一个TRUE或FALSE输出.但是如何从行中记录匹配的正则表达式:

any(regex.match(line) for regex in [regex1, regex2, regex3])
Run Code Online (Sandbox Code Playgroud)

编辑:添加示例

regex = ['quick','brown','fox']
line1 = "quick brown fox jumps on the lazy dog" # i need to be able to record all of quick, brown and fox
line2 = "quick dog and brown rabbit ran together" # i should record quick and brown
line3 = "fox was quick an rabit was slow" # i should be able to record quick and fox.
Run Code Online (Sandbox Code Playgroud)

通过正则表达式循环并记录匹配的解决方案之一是解决方案之一,但是查看比例(11*190000*10),我的脚本现在运行了一段时间.我需要在我的工作中多次重复这一点.所以我正在寻找一种更有效的方式.

python regex multiple-matches

4
推荐指数
1
解决办法
3379
查看次数

javascript正则表达式匹配多行

我的多个字符串如下所示

###
some content
that I need to match
and might have some special character in it such as | <> []
###
Run Code Online (Sandbox Code Playgroud)

我试图得到哈希之间的内容.我试过下面的正则表达式,但它不匹配它并返回null.

var regex = /### ((.|\n)*) ###/;
var match= regex.exec(aboveContentAsString);
console.log(match[1]);
Run Code Online (Sandbox Code Playgroud)

javascript regex multiple-matches

4
推荐指数
1
解决办法
5919
查看次数

如何仅在某些行上获得多个Java正则表达式匹配

我正在调用一个我无法更改的API.也就是说,我不能将它作为两个连续的正则表达式或类似的东西.API是这样编写的(当然简化):

void apiMethod(final String regex) {
    final String input = 
        "bad:    thing01, thing02, thing03 \n" +
        "good:   thing04, thing05, thing06 \n" +
        "better: thing07, thing08, thing09 \n" +
        "worse:  thing10, thing11, thing12 \n";

    final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);

    final Matcher matcher = pattern.matcher(input);

    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }
}
Run Code Online (Sandbox Code Playgroud)

我调用它是这样的:

apiMethod("(thing[0-9]+)");
Run Code Online (Sandbox Code Playgroud)

我希望看到打印出六行,每行04到09,包括一行.到目前为止我还没有成功.我试过的一些东西不起作用:

  • "(事[0-9] +)" - 这匹配所有12件事,这不是我想要的.
  • "^(?:good | better):( thing [0-9] +)" - 这只匹配第4和第7项.
  • "^(?:( ?: good | better):.*)(thing [0-9] +)" - 这只匹配第6和第9项.
  • "(?:(?:^ good:| ^ better:|,)*)(thing [0-9] +)" …

java regex multiple-matches regex-group regex-lookarounds

4
推荐指数
1
解决办法
97
查看次数

如何从Perl字符串中提取不同数量的数字组?

我试图用Perl解析Perl中的字符串格式:

Messages pushed to the Order Book queues 123691 121574 146343 103046 161253

我想访问字符串末尾的数字,所以打算做匹配

/(\d+)/s

我的问题是最后的值的数量包含可变数量的字符串.

格式化正则表达式以便能够单独访问每个数字的最佳方法是什么?我是一名C++开发人员,我只是在学习Perl,所以我试图找到最干净的Perl方法来实现这一点.

谢谢你的帮助.

regex perl multiple-matches

1
推荐指数
1
解决办法
521
查看次数