当前位置: 首页 > 面试题库 >

如何匹配重复的图案?

马正初
2023-03-14
问题内容

我想搭配:

some.name.separated.by.dots

但是我不知道如何。

我可以像这样匹配一个零件

 \w+\.

我怎么说“重复那个”


问题答案:

请尝试以下操作:

\w+(\.\w+)+

+( ... )告诉它匹配的是括号一次或多次内部。

请注意,\w仅匹配ASCII字符,因此café不会匹配到这样的单词\w+,更不用说包含Unicode的单词/文本了。

编辑

[...]和之间的区别(...)[...]始终匹配单个字符。它称为“字符集”或“字符类”。所以,[abc]没有
匹配字符串"abc",但匹配的人物之一abc

之所以\w+[\.\w+]*匹配您的字符串,是因为[\.\w+]匹配.或中的一个字符\w,然后在其之后重复零次或更多次*。但是,\w+[\.\w+]*因此也会匹配字符串aaaaaaaa...........

(...)是,正如我已经提到的,简单地用于组字符(和可能的重复的那些基团)。

有关字符集的更多信息:http :
//www.regular-expressions.info/charclass.html

有关组的更多信息:http :
//www.regular-expressions.info/brackets.html

编辑二

这是Java中的示例(看到您发布的大多数都是Java答案):

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String text = "some.text.here only but not Some other " + 
                "there some.name.separated.by.dots and.we are done!";
        Pattern p = Pattern.compile("\\w+(\\.\\w+)+");
        Matcher m = p.matcher(text);
        while(m.find()) {
            System.out.println(m.group());
        }
    }
}

会产生:

some.text.here
some.name.separated.by.dots
and.we

请注意,m.group(0)m.group()是等效的:表示“整个匹配项”。



 类似资料:
  • 可以为url使用可选参数吗?例如,如果未传递参数,则路径将匹配相同的组件; 在实现它的时候,我需要声明两个路由和来匹配同一个组件。

  • 问题内容: 例如我有字符串: 结果,我希望具有以下匹配项: 我知道我可以这样写: 但是我认为我很丑,正在寻找更好的解决方案。我在寻找正则表达式解决方案,而不是自写的有限状态机。 问题答案: 您可以将其与:

  • 我注意到,如果未提供,则它将不匹配。 如何更改它,使是可选的?

  • 我有这样一个字符串: 最终,我需要修改匹配的子字符串的每个实例,但我还需要修改和之前/之后的每个子字符串。 下面的正则表达式匹配a

  • edit:作为标识字符串在模式中-请参见下面对gknicker答案的注释

  • 问题内容: 我有两个数组,我希望能够比较两个数组,只返回匹配的值。例如,两个数组都具有值,因此将返回该值。我还没找到这样的东西。返回相似度的最佳方法是什么? 问题答案: 自然,我的方法是循环遍历第一个数组一次并检查第二个数组中每个值的索引。如果索引为,则将其添加到返回的数组中。 我的解决方案不像其他循环那样使用两个循环,因此它的运行速度可能会更快一些。如果要避免使用,则可以先对两个数组进行排序,以