正则表达式:忽略char之前和之后的空格

时间:2017-09-06 12:56:44

标签: java regex

我使用正则表达式来判断'''是否被错误地识别为'e'(例如:Te 23,4表示T€23,4或e 23,4€23,4等等上)。就我而言,表达式^(T|(?i)(Mio)|(Million)(?-i))?( )?[e]( )?\d*$效果很好。但是有一种情况,我的表达不起作用。如果在'e'(“e”)之前和之后有空格,则表达式不起作用。

如何扩展我的表达式以便不考虑这种情况?我认为至少在'e'之前或之后必须有一个角色,但我不知道如何在我的表达中实现它。

此正则表达式(((.)[e])|([e](.)))适用于空白问题,但如何合并两个表达式?

1 个答案:

答案 0 :(得分:1)

在你的正则表达式中,第一个交替组是可选的(?匹配1或 0 次),以及数字匹配部分(*匹配0或更多字符)。

所以,关键在于强制要求:

(^|T|(?i:Mio|Million))( ?)e( ?)\d+
 ^^                             ^^

请参阅regex demo^移至备用组(增强​​一点),\d使用+ 1 或更多次)量化。

<强>详情

  • (^|T|(?i:Mio|Million)) - 其中一个替代方案:
    • ^ - 字符串开头
    • T - T
    • (?i:Mio|Million) - 以不区分大小写的方式匹配2个备选项的修饰符组:MioMillion
  • ( ?) - 可选空格
  • e - e
  • ( ?) - 可选空格
  • \d+ - 一位或多位数。