如何找到不包含字符和空格的值?

时间:2017-07-31 18:52:54

标签: regex

以下是我正在使用的列表中的示例数据:

74
7491
75
75010
75013
78
8081
84
8400 Winterthu
852
9000 Aalborg
974
A
A CORUÑA
aa
Aalborg
Aargau
Aarhus
aas
AAT
AB
ABERC
Abu Dhabi
Abuja
AC
ACT
AD

使用[^\p{L}-]我可以获得一个列表,但它还包含以下值,我不希望在列表中

Abu Dhabi
Puerto Rico
Hong Kong  

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您想要找到多个项,因此您必须使用g选项。

您将分别检查每一行。通常的方式模式 对于此类案例构建的是^...$,但^$都是m 应匹配每行的开头和结尾,而不是整个字符串。 因此,您必须使用^选项。

最后一点,应该是候选人接受的内容 行,即$[\p{L}-]+之间应该是什么:任何非空的序列 任何语言或字面减去的字母,即/^[\p{L}-]+$/gm

所以,总而言之,整个正则表达式应该是:

String needlLength = bf.readLine().trim();

if(needlLength == null || needlLength.equals(""))
    break;

这样,包含空格的名称(例如 Puerto Rico )将不会匹配 (如您所指定)。

答案 1 :(得分:0)

说你的文件是test.dat

grep中的1个简单行将为您提供所需的视频:

grep -o -P  "[0-9]+$" test.dat

输出:

74
7491
75
75010
75013
78
8081
84
852
974