我想从字符串中检索特定信息(坐标),其中某些字符(例如''
和换行符)可以出现在其中的任何位置。我的长期目标是用对应的城市名称替换字符串中的坐标。
这是一个字符串示例(它是wikicode):
''These are the coordinates'' :
''Long. 17d. 6′. 8″. lat. 47d. 28′. 8″
''Lon. ''36d. 70′. 80″. ''lat. 45d. 20′. 5″
''Long. 17d. 6′. 8″.
lat. 47d. 28′. 8″
(我希望3个坐标匹配)。
这是到目前为止我想到的PCRE正则表达式:
/''Long?(?:'')?\.(?:'')? .*?(?P<Degrees>\d+).*?d.+?(?P<Minutes>\d+)′.*?(?P<Seconds>\d+)″.*?(?:'')?lat(?:'')?\.(?:'')?.*?(?P<Degrees>\d+).*?d.+?(?P<Minutes>\d+)′.*?(?P<Seconds>\d+)″.*?/gmJ
最后一个坐标与我的正则表达式不匹配,因为中间有一个换行符。一开始,我以为:“好吧,我将在正则表达式中添加一个可选的换行符”,但是后来我意识到,换行符就像''
一样,可能会出现在字符串的任何位置,并添加可选的换行符和可选的''
(就像我开始在正则表达式中一样)之后,我的正则表达式中的每个字符听起来像是完全不可读和无法维护的。
在这里我有什么选择?从理论上讲,我可以从字符串中删除''
和换行符,但实际上我需要在字符串的其他部分使用它们(例如在子字符串''These are the coordinates''
中:这些''
必须保留)