我想从长标题中检索发布者字符串。
- THE TRIBUNE-JOURNAL (Johnstown, Pa.) - The 5 Best Places To Live If You Hate Winter
我试过了preg_match(' /-(.*?)-/ ', $publisher_title, $pub_dashed);
它输出: - THE TRIBUNE- [bad]
它应该是: - TRIBUNE-JOURNAL(宾夕法尼亚州约翰斯敦) - [good]
请注意,发布商大部分时间没有破折号,
例如: - 路透社 - 2013年最佳年度相机奖
它输出: - 路透社 - [好]
答案 0 :(得分:0)
preg_match('/\A- (.+?) - /', $publisher_title, $pub_dashed);
答案 1 :(得分:0)
选项1: /- (.+?) -[^-]*$/
?
捕获此字符串:
- THE TRIBUNE - JOURNAL (Johnstown, Pa.) - The 5 Best Places To Live If You Hate Winter
它返回匹配1 THE TRIBUNE - JOURNAL (Johnstown, Pa.)
它的工作原理是找到最后一个非连字符并删除它。它也适用于您在TRIBUNE-JOURNAL之间有 no 空格的原始示例。
工作示例:http://regex101.com/r/cL2bB7
警告:如果标题中有破折号,那就不会起作用。
选项2:
如果发布者总是大写,您可以使用/- ([A-Z\s\-]+\s\(.*?\))/
,它将查找所有大写字母,空格或短划线,然后是括在括号中的文字()。