Java 字符串的第一个字和最后一个字的正则表达式用分隔符分隔
我正在尝试为以下表达式获取正则表达式,但无法实现:Java 字符串的第一个字和最后一个字的正则表达式用分隔符分隔,java,regex,Java,Regex,我正在尝试为以下表达式获取正则表达式,但无法实现: 字符串有4个用点(.)分隔的单词 第一个单词与给定单词匹配(例如,HELLO) 第二个和第三个单词可以有任何字符,但点本身(.) 最后一个单词再次与给定单词匹配(例如csv) 因此: 您好,有东西。有东西我#gElse.csv应该匹配 有些东西。您好。?.csv不应该匹配 你好,有点…csv不匹配 HELLO.something.somethingelse.notcsv不应匹配 我可以使用split(.)来完成,然后检查单个单词,但我正
- 字符串有4个用点(.)分隔的单词
- 第一个单词与给定单词匹配(例如,HELLO)
- 第二个和第三个单词可以有任何字符,但点本身(.)
- 最后一个单词再次与给定单词匹配(例如csv)
- 您好,有东西。有东西我#gElse.csv应该匹配
- 有些东西。您好。?.csv不应该匹配
- 你好,有点…csv不匹配
- HELLO.something.somethingelse.notcsv不应匹配
如果您能提供任何帮助,我们将不胜感激。这相对简单,只要您了解角色类。方括号为
[xyz]
的正则表达式匹配列表中的任何字符{x,y,z}
;正则表达式[^xyz]
匹配除{x,y,z}
之外的任何字符
现在可以构造表达式:
^HELLO\.[^.]+\.[^.]+\.csv$
+
表示“前面的一个或多个表达式”<代码>\。表示“点本身”<代码>^表示“字符串的开头”<代码>$表示“字符串的结尾”。这些锚阻止正则表达式匹配
blahblahHELLO.world.world.csvblahblah
编写这样的正则表达式的一个常见目标是捕获一些内容,例如,第一个点和第二个点之间的字符串,以及第二个点和第三个点之间的字符串。使用捕获组将这些字符串的内容带入Java程序:
^HELLO\.([^.]+)\.([^.]+)\.csv$
每对括号定义了一个捕获组,索引自1
(索引为零的组表示整个表达式的捕获)。一旦从模式中获得匹配对象,就可以在其中查询组,并提取相应的字符串
注意,Java正则表达式中的反斜杠需要加倍
(^HELLO\.[^.]+\.[^.]+\.csv$)
.如果
你好…csv
是有效匹配项,则从+
-一个或多个切换到*
-零个或多个。回答不错。您可能想演示一个正则表达式,其中第一个单词可以是hello或Word或Foo,最后一个单词可以是CSV或XLS或TXTT,也可以用组来从匹配中收集每一个单词。非常感谢您,真的帮助我更好地理解正则表达式:也可以考虑包装您需要匹配的单词。方法中的(HELLO
和csv
)欢迎使用堆栈溢出!请包含一些代码以显示您尝试了什么。