当文本还包含 'of' 时,正则表达式提取包含 'of' 的地名(如 'Isle of Man')
Regex to extract placenames containing 'of' (like 'Isle of Man') when text also contains 'of'
我有一些历史文本,其中包含文本描述,例如 'Son of Mrs. H. E. Tyler, of Chester Lodge, Epsom, Surrey'
我有一个正则表达式 /.* of .*,? of (.*)/
,它工作正常,直到在地名中有效使用单词 'of'。所以对于上面的例子,它 returns 'Chester Lodge, Epsom, Surrey' 但对于 'Son of Mrs. H. E. Tyler, of Chester Lodge, Sandown, Isle of Wight' 它 returns 只是 'Wight',而不是 'Chester Lodge, Sandown, Isle of Wight'
我如何构造一个正则表达式,如果 'of' 在上下文 'Isle of .*' 中,它会将整个地名放入捕获字符串中?
如果有效的 of
位置总是出现在字符串的末尾,那么您需要做的就是使字符的重复 lazy 而不是greedy,所以它们会从尽可能短的长度开始,然后逐渐增加直到找到匹配项,而不是从尽可能长的长度开始,然后逐渐缩短:
.*? of .*?,? of (.*)
https://regex101.com/r/INAuLy/1
(只要您没有包含 " of "
的任何 真实姓名 就可以)
我有一些历史文本,其中包含文本描述,例如 'Son of Mrs. H. E. Tyler, of Chester Lodge, Epsom, Surrey'
我有一个正则表达式 /.* of .*,? of (.*)/
,它工作正常,直到在地名中有效使用单词 'of'。所以对于上面的例子,它 returns 'Chester Lodge, Epsom, Surrey' 但对于 'Son of Mrs. H. E. Tyler, of Chester Lodge, Sandown, Isle of Wight' 它 returns 只是 'Wight',而不是 'Chester Lodge, Sandown, Isle of Wight'
我如何构造一个正则表达式,如果 'of' 在上下文 'Isle of .*' 中,它会将整个地名放入捕获字符串中?
如果有效的 of
位置总是出现在字符串的末尾,那么您需要做的就是使字符的重复 lazy 而不是greedy,所以它们会从尽可能短的长度开始,然后逐渐增加直到找到匹配项,而不是从尽可能长的长度开始,然后逐渐缩短:
.*? of .*?,? of (.*)
https://regex101.com/r/INAuLy/1
(只要您没有包含 " of "
的任何 真实姓名 就可以)