空间是否会影响正则表达式java

时间:2016-04-15 18:39:33

标签: java regex

我正在使用正则表达式来定义一组从非结构化简历中提取特定信息的规则。 这些信息是:

申请人工作或仍在工作的公司

角色(指定)...例如:软件工程师

日期(从 - 到)

每个申请人都以自己的方式写下自己的工作细节。但是,一些简历有一个共同的风格,例如:

  

2012- 2014。工程信息技术学院院长/   大学名称。

所以我定义了这个regex以便提取所需的信息 这是我的正则表达式:

(^[0-9]{4})(-|–|.|_|to) ([0-9]{4})(.*) (of the|at|in) (.*).

这个正则表达式能够从上面的例子中提取信息

role:Dean 
company: Faculty of Engineering Information Technology/University Name.
date from: 2012 to :2014 
loyalty: 2 years // this is depend on the extracted date

但我还有另一份来自另一份简历的样本

  

1996-1997,耶路撒冷计算机科学系讲师开放   大学。

它应该给予匹配,但直到我删除正则表达式中的空格然后才能提取数据 我的问题是空间对正则表达式有影响吗?!!

以及我如何解决这个问题,以便它可以从regex规则中的空间的简历中提取数据?

Here my demo the space is here

2 个答案:

答案 0 :(得分:3)

  

空格会影响正则表达式吗?

你已经确定了它确实如此。除非在模式中启用COMMENTS选项,否则空格字符不是正则表达式元字符。通常,它们就像大多数其他角色一样代表自己。

  

我如何解决这个问题,以便它可以从regex规则中的空间的简历中提取数据?

您可以将?*等量化因素应用于正则表达式中的空格字符,就像对任何其他字符或组一样。因此,例如,您可以使用

(^[0-9]{4})(-|–|.|_|to) *([0-9]{4})(.*) (of the|at|in) (.*).

还要考虑您有时也必须处理制表符。您可以使用转义序列\s来匹配除换行符之外的任何单个空格字符,无论它是空格,制表符还是Java认可的任何其他空白字符。

答案 1 :(得分:1)

您可以使用\\s*代替空格来使用可选数量的空白区域。 \\s表示空白字符,*表示零或更多