【问题标题】:Regular expression for dividing country calling codes国别区号划分正则表达式
【发布时间】:2010-04-07 12:00:41
【问题描述】:

我有一个所有国家/地区的呼叫代码列表(电话号码前缀),我想将它们拆分为 国家名称和实际代码,以便我可以将其放入 xml。

我来回尝试过,但无法得到一个考虑所有情况的正则表达式。 我认为对于有一点经验的人来说这相当简单。

代码有以下格式:

阿富汗 93
安圭拉 1 264
南极洲 6721
安提瓜和巴布达 1 268
波斯尼亚和黑塞哥维那 387
加拿大 1
刚果共和国 242
科特迪瓦 225
爱尔兰 (Eire) 353
美国 1

总共大约有 235 个,但这些是常客和例外。

^[a-zA-Z]\s,'()] for between 1 and X words and then it is [0-9\s]{1,5}$ for the numbers:

X
XX
XXX
XXXX
X XXX 

因此,如果我应该将其表达为一个句子,那就是:“从一行的开头,取所有字符 (1),包括空格,'(),直到遇到数字,然后取所有这些字符,包括空格 (2)直到遇到换行符。”

我正在使用 TextMate,文档说:

TextMate 使用 Oniguruma 正则 K. Kosako 的表达式库。

如果能提供任何帮助,我将不胜感激:) 谢谢。

【问题讨论】:

  • 由于您使用的是 OS X (TextMate...),如果您不熟悉正则表达式,我建议您使用 Regexhibit (homepage.mac.com/roger_jolly/software/#regexhibit) 创建正则表达式
  • 嗨,彼得,谢谢。当我输入这个时,Regexhibit 正在下载。它让我感到“难以让你的正则表达式恰到好处?不确定它们匹配什么以及遗漏什么?厌倦了每次都必须编写测试程序?RegExhibit 可以提供帮助。” :)

标签: regex


【解决方案1】:

这个posix regex 应该足够了:^[a-zA-Z ]+[0-9 ]+$

【讨论】:

  • 嗨,灵魂融合,非常感谢!那很快:) 让我最后的 1.5 小时显得相当浪费。结果是这样的: find: ^([a-zA-Z ]+)([0-9 ]+)$ replace: $2$1 就像一个魅力.
猜你喜欢
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-29
  • 2013-01-21
  • 1970-01-01
  • 2012-01-24
相关资源
最近更新 更多