当前位置: 首页 > 知识库问答 >
问题:

不考虑空间的正则表达式

宰父飞白
2023-03-14

我在java中有以下正则表达式-

Pattern p = Pattern.compile("int|float|char\\s\\w");

但这仍然匹配“实习生”。

整个代码-

package regex;

import java.io.*;
import java.util.*;
import java.util.regex.*;

public class Regex {

    public static void main(String[] args) throws IOException{
        // TODO code application logic here
        int c = 0;
        BufferedReader bf = new BufferedReader(new FileReader("new.c"));
        String line;
        Pattern p = Pattern.compile("int|float|char\\s\\w");
        Matcher m;
        while((line = bf.readLine()) != null) {
            m = p.matcher(line);
            if(m.find()) {
                c++;
            }
        }
        System.out.println(c);
    }
}

共有2个答案

宋建本
2023-03-14

用括号包围选项,如下所示:

Pattern p = Pattern.compile("(int|float|char)\\s\\w");

此外,如果您想覆盖一些边缘情况,以便处理一些格式错误的代码,您可以使用:

Pattern p = Pattern.compile("^(\\s|\\t)*(int|float|char)(\\s|\\t)+[a-zA-Z_][a-zA-Z0-9_]*(\\s|\\t)*");

这应该包括类型和变量名之间有多个空格或制表符的情况,也应该包括以下划线开头的变量名,以及“int”、“float”或“char”是某个单词结尾的情况。

陆沈浪
2023-03-14

我想你的意思是找到一个备选方案,然后再加上一个空格和一个单词。

但是

 (?:
      int
   |                    # or,
      float
   |                    # or,
      char \s \w
 )

从列表中可以看到,字符仅适用于字符选项。

要解决这一问题,请将该代码带到组之外,以便它适用于所有备选方案。

 (?:
      int
   |                    # or,
      float
   |                    # or,
      char 
 )
 \s \w

最后的正则表达式是“(?:int | float | char)\\s\\w”

 类似资料:
  • 问题内容: 假设我有一本书的书名用 ElasticSearch 索引如下: }’ 例如,我有一本书叫。 以下代码(搜索)可以很好地返回书中: 但是以下代码(搜索)没有: 我试图用或替换空格,但是它也不起作用。 我认为标题以()分隔,因此找不到。 如何要求Elasticsearch在完整标题中搜索regexp? 问题答案: Elasticsearch会将正则表达式应用于令牌生成器针对该字段生成的术语

  • 我有这个电话正则表达式,但我想让它接受空格。 例如应该传递,但目前它没有传递。91 9 820 09 8200也应该传递,所以任何地方的空间都是可以接受的 https://jsfiddle.net/ofn9knay/268/

  • 我从< code>YouTube频道复制了一些订阅。这是<代码>“4 我试图删除这些数字中的空白字符,但是我做不到。我也尝试了<代码>。replaceAll(" "," ")方法,但也不起作用。 屏幕从 regex101.com JSON Youtube代码:JSON Youtube 然后我使用来获取订阅,如下所示: 最后,我使用< code>regex删除number中的空格: 我也试过这个,但

  • 问题内容: 我在尝试忽略某些字符之间的空格时遇到问题。我已经搜寻了几天,似乎找不到合适的解决方案。 这是我的代码: 基本上,这些是我遇到的一些情况: (请注意,width =“”和src =“”之间没有空格) 和 (请注意,在width =“”和height =“”之间没有空格。) 无论如何,有没有忽略这些字符之间的空格?因为我不是Regex专家。 问题答案: 如果可以使用空格,请添加一个。 \

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?