我试图获得以下表达式的正则表达式,但无法实现:
所以:
我可以使用split(。)然后检查单个单词,但我尝试使用Regex和Pattern类。
任何帮助都会非常感激。
答案 0 :(得分:3)
只要你理解字符类,这是相对简单的。带方括号[xyz]
的正则表达式匹配列表{x, y, z}
中的任何字符;正则表达式[^xyz]
匹配 {x, y, z}
以外的任何字符。
现在您可以构建表达式:
^HELLO\.[^.]+\.[^.]+\.csv$
+
表示"前面一个或多个表达式&#34 ;; \.
表示"点自己"。 ^
表示"字符串的开头&#34 ;; $
表示"字符串的结尾"。这些锚点阻止正则表达式匹配
blahblahHELLO.world.world.csvblahblah
编写这样的正则表达式的一个共同目标是捕获某些内容,例如,第一个和第二个点之间的字符串,以及第二个和第三个点之间的字符串。使用捕获组将这些字符串的内容带入Java程序:
^HELLO\.([^.]+)\.([^.]+)\.csv$
每对括号定义一个捕获组,从1
索引(索引为零的组表示整个表达式的捕获)。从模式中获取匹配对象后,可以查询组中的匹配对象,并提取相应的字符串。
请注意,Java正则表达式中的反斜杠需要加倍。
答案 1 :(得分:0)
(^HELLO\.[^.]+\.[^.]+\.csv$)