在Ruby中,要使用正則表達(dá)式匹配復(fù)雜模式,首先需要導(dǎo)入re
模塊。然后,可以使用正則表達(dá)式的各種元字符、限定符和分組來(lái)構(gòu)建復(fù)雜的匹配模式。以下是一些常見的正則表達(dá)式元字符和限定符:
^
:匹配字符串的開頭$
:匹配字符串的結(jié)尾.
:匹配任意單個(gè)字符(除了換行符)*
:匹配前面的字符或子表達(dá)式零次或多次+
:匹配前面的字符或子表達(dá)式一次或多次?
:匹配前面的字符或子表達(dá)式零次或一次{n}
:匹配前面的字符或子表達(dá)式恰好n次{n,}
:匹配前面的字符或子表達(dá)式至少n次{n,m}
:匹配前面的字符或子表達(dá)式至少n次,至多m次|
:表示或,用于匹配多個(gè)選擇()
:用于分組和捕獲[]
:表示字符集,用于匹配方括號(hào)內(nèi)的任意一個(gè)字符[^]
:表示非字符集,用于匹配方括號(hào)外的任意一個(gè)字符\
:用于轉(zhuǎn)義特殊字符以下是一些使用Ruby正則表達(dá)式匹配復(fù)雜模式的示例:
# 匹配郵箱地址
email_pattern = /\A[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\z/
puts email_pattern.match?("example@example.com") # 輸出: true
# 匹配電話號(hào)碼
phone_pattern = /\A(\d{3})\D*(\d{3})\D*(\d{4})\z/
puts phone_pattern.match?("123-456-7890") # 輸出: true
# 匹配URL
url_pattern = %r{https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+}
puts url_pattern.match?("https://www.example.com") # 輸出: true
# 匹配IPv4地址
ipv4_pattern = /\A(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\z/
puts ipv4_pattern.match?("192.168.1.1") # 輸出: true
這些示例展示了如何使用Ruby正則表達(dá)式匹配不同類型的復(fù)雜模式。你可以根據(jù)需要修改這些模式以適應(yīng)不同的匹配需求。