正则表达式匹配字符串模式提及

时间:2012-11-30 10:03:21

标签: java regex string

我正在使用java,我必须使用正则表达式检查输入字符串。  我是正则表达的新手。

我正在输入表单中的输入。

以下是我需要记下正则表达式的示例数据。

LastName  FirstName

Ab.CD           BC
Ab-CFgD         Ab.CD
F'b-CF gD       BC
F'b-CF gD.      F.b-CF gD'D
Fb-CF gD'D      BC
F.b-CF gD'D     F'b-CF gD

表示在LastName和First name之间包含dot(.), Hiphen(-), And single quotes(')

我只为“姓氏,名字”写下了regexx。

"[a-zA-Z]+, *[a-zA-Z]+"

正则表达式用于查找上面提到的所有字符串

2 个答案:

答案 0 :(得分:0)

试试这个: -

"([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)"

说明: -

(            // Capture group 1
  [          // Character class
    a-zA-Z   // alphabets
    .        // a Dot
    '        // A quote
    -        // A hyphen (Should be at the end, in the middle it means a range
  ]+         // Character class close. One or more repetition
)            // Group 1 closes

似乎你的姓氏或名字之间也有一个空格,如你的例子所示。请检查一下是否正确。

您在上述正则表达式中有two capture groups。这两个群组都会抓取firstnamelastname。你可以打印它们。

示例运行一些字符串: -

String str1 = "Ab.CD, Ab.CD";
String str2 = "F'b-CFgD., F'b-CFgD.";
String str3 = "F'b-CF gD, F'b-CF gD";

System.out.println(str1.matches("([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)"));  // true
System.out.println(str2.matches("([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)"));  // true
System.out.println(str3.matches("([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)"));   //false

如您所见,最后一个打印为false,因为第3个字符串之间有空格。如果您还想匹配空格,请将其添加到角色类中。


要确保firstnamelastname仅以字母开头,您可以像这样修改正则表达式: -

"([a-zA-Z][a-zA-Z.'-]+),[ ]*([a-zA-Z][a-zA-Z.'-]+)"

在两种模式的开头添加[a-zA-Z],以确保第一个字符来自给定的字母范围。

答案 1 :(得分:0)

"([a-zA-Z\\.\\-\\']*),\\s*([a-zA-Z\\.\\-\\']*)"

使用此网站与正则表达式一起使用,以确定适用于您的内容。

Regex Test Site