Java 需要帮助修改正则表达式吗
总有一天我会精通正则表达式,但现在 我正在解析一个HTML页面,使用以下表达式查找MP3文件(有效):Java 需要帮助修改正则表达式吗,java,regex,Java,Regex,总有一天我会精通正则表达式,但现在 我正在解析一个HTML页面,使用以下表达式查找MP3文件(有效): ”了解更多信息 Replace \.mp3 with \.((mp3)|(ogg)) 注意用正则表达式解析HTML。了解模式 您具有以下Java字符串文字: // Java string literal "<A HREF=\"([^\"]+)\"[^>]*>([^<]+?)\\.mp3</A>" 作为Java字符串文字,这是: "<
”了解更多信息
Replace
\.mp3
with
\.((mp3)|(ogg))
注意用正则表达式解析HTML。了解模式
您具有以下Java字符串文字:
// Java string literal
"<A HREF=\"([^\"]+)\"[^>]*>([^<]+?)\\.mp3</A>"
作为Java字符串文字,这是:
"<A HREF=\"([^\"]+)\"[^>]*>([^<]+)\\.(mp3|ogg)</A>"
”。类似于[aeiou]
的内容匹配任何一个小写元音<代码>[^…]
是一个否定字符类<代码>[^aeiou]
匹配除小写元音以外的任何一个元音
(…)
是一个。它允许以后检索匹配的字符串
*
和+
是。默认情况下,重复是贪婪的(即尽可能多地匹配)。+?
中的?
使其不情愿(即尽可能少地匹配)
请注意,?
也可以在其他上下文中用作
是一个元字符。因为我们需要一个文字句点,所以我们通过在前面加上双斜杠来转义它
请注意,正则表达式模式默认情况下区分大小写。在Java中,您可能希望在模式中使用标志(可嵌入为
(?i)
)。为什么使用双括号<代码>\(mp3 | ogg)放在括号里就足够了,因为我的前意识将(这个|那个)解析为匹配这个帽子或那个东西,我必须通过应用优先规则有意识地覆盖它。+1而不是仅仅给出答案,你真的超越了,解释了如何和为什么。你是那种需要更多帮助的人。
// the regex pattern
<A HREF="([^"]+)"[^>]*>([^<]+?)\.mp3</A>
_________ _ _ E________
<A HREF="([^"]+)"[^>]*>([^<]+?)\.mp3</A>
\_____/ \______/
1 2
<A HREF="([^"]+)"[^>]*>([^<]+)\.(mp3|ogg)</A>
\_____/ \_____/ \_______/
1:url 2:filename 3:ext
"<A HREF=\"([^\"]+)\"[^>]*>([^<]+)\\.(mp3|ogg)</A>"