我有一个标题:的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)) –