带地址转换的ruby正则表达式

带地址转换的ruby正则表达式,ruby,regex,Ruby,Regex,到 数字是双字节。我有一个字符串,包含地址。如何像上面那样转换该地址。回答可能应该提出的问题(鉴于评论中的澄清): 这将处理“编号+位置”(其中“位置”为地块、区块、(房屋)编号…)的任何序列,该序列后面跟有另一个编号,或位于字符串末尾,用破折号替换位置;然后移除最后一个破折号(如果有) 请注意,这不会在日本数字上出现:如果您得到一个地址,如東京都千代田区丸の内一丁目2番1号, 将其转换为東京都千代田区丸の内一-2-1,将日语数字转换为阿拉伯语数字是很简单的,最多9个,然后再稍微简单一些。回答可


数字是双字节。我有一个字符串,包含地址。如何像上面那样转换该地址。

回答可能应该提出的问题(鉴于评论中的澄清):

这将处理“编号+位置”(其中“位置”为地块、区块、(房屋)编号…)的任何序列,该序列后面跟有另一个编号,或位于字符串末尾,用破折号替换位置;然后移除最后一个破折号(如果有)


请注意,这不会在日本数字上出现:如果您得到一个地址,如東京都千代田区丸の内一丁目2番1号, 将其转换为東京都千代田区丸の内一-2-1,将日语数字转换为阿拉伯语数字是很简单的,最多9个,然后再稍微简单一些。

回答可能应该问的问题(给出评论中的澄清):

address.gsub(/([0-9]+)(?:丁目|番地?|号)(?=[0-9]|$)/, '\1-').sub(/-$/, '')
这将处理“编号+位置”(其中“位置”为地块、区块、(房屋)编号…)的任何序列,该序列后面跟有另一个编号,或位于字符串末尾,用破折号替换位置;然后移除最后一个破折号(如果有)



请注意,这不会在日本数字上出现:如果您得到一个地址,如東京都千代田区丸の内一丁目2番1号, 将其转换为東京都千代田区丸の内一-2-1,将日文数字转换成阿拉伯语数字是很简单的,最多9个,然后再简单一些。

string.gsub(/(?
string.gsub(/)(?关于
“1 building2floor”
“1”
“2”
可以是任何数字吗?
“1building 2 floor”
(注意间距)?是“building”这个词吗始终要匹配?请编辑以澄清。您可能希望使用可能出现或可能不出现的字符串的其他示例来进行匹配。“1”、“2”可以是任何数字,也可以是“1楼2楼”两者都可以(有空格,没有空格。是的,但不要试图在评论中澄清,因为不是每个人都会注意到。改为编辑你的问题。好问题,顺便说一句。你正在尝试处理吗東京都千代田区丸の内1丁目2番1号? 不确定这个“建筑”是什么,特别是在第一部分,通常省名和区名之间没有任何区别。如果你的例子尽可能符合真实数据,你会得到更好的答案。关于
“1 building2floor”
,你还能说些什么呢?
“1”
“2”
是否有任何数字?是否可以是
“1building 2 floor”
(注意间距)?“building”一词是否总是匹配?请编辑以澄清。您可能希望使用可能出现或可能不出现的字符串的其他示例来执行此操作。“1”、“2”可以是任何数字,也可以是“1building 2 floor”二者都可以(有空格,没有空格。是的,但不要试图在评论中澄清,因为不是每个人都会注意到。改为编辑你的问题。好问题,顺便说一句。你正在尝试处理吗東京都千代田区丸の内1丁目2番1号? 不确定这个“建筑”是什么,特别是在第一部分,通常省名和区名之间没有任何区别。如果你的例子尽可能符合真实数据,你会得到更好的答案。@CarySwoveland:正如我所说的,我是在了解真实的日语地址,因为OP证实没有文本中的“building”或“floor”或“number”。测试我在评论中提供的更真实的日语地址,文本中的任何示例,或你在野外找到的随机真实日语地址。谢谢。但有一件事,它不能取代丁目|番地?|号 等等。请你一步一步地向我解释。我该怎么做。这对我来说就是。这就是我所做的。你可能正在使用过时的Ruby(在1.9之前)?编辑:我正在使用Ruby 1.9.3。你的Ruby版本是什么?2.2.0。它应该与1.9+一起工作(1.8默认情况下不使用Unicode)@CarySwoveland:正如我所说的,我是在了解真实的日语地址的基础上工作的,OP确认没有“建筑”或“楼层”或“号码”“实际上是在课文中。测试我在评论中提供的一个更真实的日语地址,任何一个例子,或者你在野外找到的随机真实的日语地址。谢谢。但是有一件事,它不能取代丁目|番地?|号 等等。你能一步一步地给我解释一下吗。我该怎么做。这就是我所做的。你可能正在使用过时的Ruby(1.9之前)?编辑:我在使用Ruby 1.9.3。你的Ruby版本是什么?2.2.0。它应该与1.9+一起工作(1.8默认情况下不使用Unicode)。谢谢。但有一件事。它不会取代丁目|番地?|号 你能一步一步地给我解释一下吗?我应该做什么?单靠代码块并不能提供一个好的答案。请添加解释。谢谢。但有一件事,它不能代替丁目|番地?|号 等等。请你一步一步地给我解释。我应该做什么?单靠代码块并不能提供一个很好的答案。请添加解释。
address.gsub(/([0-9]+)(?:丁目|番地?|号)(?=[0-9]|$)/, '\1-').sub(/-$/, '')
address.gsub(/([0-9]+)(?:丁目|番地?|号)(?=[0-9]|$)/, '\1-').sub(/-$/, '')
string.gsub(/(?<=[0-9])(?:丁目|番地?|号)\b/, "-").sub(/\z/, "")