java - 在java中编写正则表达式

标签 java regex

我正在尝试编写正则表达式来匹配特定模式

// 1. 1:15
// 2. 3:15 PM
// 3. (3:15) PM
// 4. (3:15 PM)
// 5. DIGITAL PROJECTION 1:35 AM
// 6. (1:15)
// 7. DIGITAL PROJECTION (1:35 AM)
// 8. RWC/DVS IN DIGITAL PROJECTION (11:40 AM)

我能写的是

(.*)??\\s?\\(?(\\d{1,2})[:](\\d{1,2})\\)?\\s?(\\w{2})?

它适用于前 5 个示例,但不适用于其他示例,我在该正则表达式中看到的 2 个问题是例如 6 我希望组 1 为空,示例 8 将组 1 返回为“RWC/DVS 数字投影(”但我只想要“RWC/DVS 数字投影”

最佳答案

您是否正在寻找类似的东西:

^(.*?)\W*(\d{1,2}):(\d{1,2})\W*([AaPp][Mm])?.*$

这里有一个解释

^                 <-- Beginning of the line
    (.*?)         <-- Match anything (but ungreedy)
    \W*           <-- Match everything that's not a word/number (we'll ignore that)
    (\d{1,2})     <-- Match one or two digits (hours)
    :             <-- :
    (\d{1,2})     <-- Match one or two digits (minutes) [You should consider only matching two digits]
    \W*           <-- Match everything that's not a word/number (we'll ignore that)
    ([AaPp][Mm])? <-- Match AM or PM (and variants) if it exists
    .*            <-- Match everything else (we'll ignore that)
$                 <-- End of the line

您甚至可以在行首之后添加另一个 \W*,以在捕获第一组之前忽略所有非单词/数字的内容。

关于java - 在java中编写正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9638109/

相关文章:

java - BeanFactory 未初始化或已关闭

sql - 进行 psql 导出(使用正则表达式替换所有列)的最佳方法是什么?

java - 如何在 Jung 中使用 GraphMLReader2?

JAVAFX:找不到文件的相对路径

java - 带 Keycloak 的 Quarkus GraphQL 客户端

regex - 锚定正则表达式和非锚定正则表达式有什么区别?

regex - 如何在 Pug (Jade) 模板中使用 HTML5 pattern 属性

c# - 使用正则表达式过滤掉不良字符

javascript 正则表达式替换不起作用,但字符串替换有效

java - 如何查看数组