Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式:忽略字符前后的空格_Java_Regex - Fatal编程技术网

Java 正则表达式:忽略字符前后的空格

Java 正则表达式:忽略字符前后的空格,java,regex,Java,Regex,我使用正则表达式来确定一个€是否被错误地识别为“e”(例如:Te 23,4表示T 23,4欧元或e23,4表示23,4欧元等等)。在我的例子中,表达式:^(T|(?i)(Mio)|(Million)(?-i))?()?([e]()?\d*$运行良好。但有一种情况下,我的表达不起作用。如果在“e”(“e”)前后有空格,则表达式不起作用 我如何扩展我的表达式以便不考虑这种情况?我认为至少在“e”之前或之后必须有一个字符,但我不知道如何在我的表达式中实现这一点 这个正则表达式(((()[e])|([e

我使用正则表达式来确定一个€是否被错误地识别为“e”(例如:Te 23,4表示T 23,4欧元或e23,4表示23,4欧元等等)。在我的例子中,表达式:
^(T|(?i)(Mio)|(Million)(?-i))?()?([e]()?\d*$
运行良好。但有一种情况下,我的表达不起作用。如果在“e”(“e”)前后有空格,则表达式不起作用

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


这个正则表达式
(((()[e])|([e]())
可以解决空白问题,但是如何合并这两个表达式呢?

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

因此,关键是要让它们成为强制性的:

(^|T|(?i:Mio|Million))( ?)e( ?)\d+
 ^^                             ^^
看。
^
被移动到交替组(增强了一点),并且
\d
被量化为
+
1或更多次)

详细信息

  • (^ | T |)(?i:Mio | Million))
    -备选方案之一:
    • ^
      -字符串的开头
    • T
      -a
      T
    • (?i:Mio | Million)
      -以不区分大小写的方式匹配两个备选方案的修饰符组:
      Mio
      Million
  • (?)
    -可选空格
  • e
    -一个
    e
  • (?)
    -可选空格
  • \d+
    -1个或多个数字

()?是说你可以有一个可选的空格。你可以试着懒一点,用两个正则表达式^可能吧?因为需求不明确,所以很难提供可靠的解决方案。@sniperd真可惜!有时候很容易!谢谢@WiktorStribiżew您的解决方案同样有效!非常感谢你!现在我明白了:)非常感谢!