我有一個標題:的Html正則表達式除去一年格式標題
[b]Author Name - Book Title (2004) (PDF)[/b]
我想刪除(2004年),並在這個標題(PDF),我可以用書名這個正則表達式分離作者姓名和:
\[b\](.+?) - (.+?)\[/b\]
但是,我不知道如何去除年份及其格式。
我真的很感謝任何幫助。
我有一個標題:的Html正則表達式除去一年格式標題
[b]Author Name - Book Title (2004) (PDF)[/b]
我想刪除(2004年),並在這個標題(PDF),我可以用書名這個正則表達式分離作者姓名和:
\[b\](.+?) - (.+?)\[/b\]
但是,我不知道如何去除年份及其格式。
我真的很感謝任何幫助。
用正則表達式,它有助於儘可能具體,你可以
\[b\](\w+(?: \w+)*) - (\w+(?: \w+)*) \(\d+\) \(\w+\)\[\/b\]
(\w+(?: \w+)*)
:場系列用空格分隔的單詞(數字算的話)
(?:)
是非捕獲組\(\d+\) \(\w+\)
:匹配(<數字> )(< word>)這樣會更高效,並且不會匹配格式錯誤的數據,而不會給你一些未定義的結果。當您發現想要支持的無效案例時進行調整。
這很酷。謝謝@Tezra這麼多。 –
我不知道任何像「HTML正則表達式」的東西,只是可以在HTML5 <input>
標記中使用正則表達式作爲驗證規則。
[b]Author Name - Book Title (2004) (PDF)[/b]
根本不對應於HTML。
如果您確信
你可以過濾掉兩個字段的方式與您選擇作者和標題的方式相同...
您沒有指定正則表達式/引擎的風格,但是使用了您使用的語法,如下所示ULD工作:
\[b\](.+?) - (.+?) \(\d{4}\) \(.*?\)\[/b\]
一個Perl RE可能看起來像
/\[b\] \s* (.+?) \s+ - \s+ (.+?) \s+ \(\d{4}\) \s+ \(.*?\) \s* \[\/b\]/x
返回在分別爲$ 1和$ 2,作者和標題。如有必要,使用圓括號也可以捕獲2個屬性。
謝謝,我會試試這種方式 –
您應該刪除HTML標記,因爲這實際上與問題無關。 – Tezra
替換模式['\(。* \)'](https://regex101.com/r/MEfAv3/1)用''''替代您的語言。 (在PHP中它會是['preg_replace'](http://php.net/manual/en/function.preg-replace.php)) –