到目前为止,这是我的正则表达式,它将分割成非字母数字字符,包括国际字符(即韩文,日文,中文字符)。
title = '[MV] SUNMI(선미) _ 누아르(Noir)'
title.split(/[^a-zA-Z0-9 ']/)
这是匹配任何国际字符的正则表达式:
[^\x00-\x7F]+
我来自Regular expression to match non-English characters?,我想这是100%正确的(无争议!)
如何合并这2个字符,以便可以拆分非字母数字字符(国际字符除外)?简单的部分就完成了。我只需要以某种方式结合这些正则表达式即可。
我的预期输出将是这样
["MV", "SUNMI", "선미", "누아르", "Noir"]
TLDR:我只想分割非字母数字字符(英文字母,应该 分割外来字符)
答案 0 :(得分:0)
因此,基本上,您希望分割所有ASCII字符,但非字母字符。您可以使用此正则表达式来选择ascii范围内的所有字符。
[ -@[-`{-~]+
此正则表达式的范围为@
,然后忽略所有大写字母,然后从[
到反引号中选择所有字符,然后忽略所有小写字母,然后从{
到{{1 }},在ascii表中可以看到。
如果要排除扩展的ascii字符,可以使用~
更改正则表达式中的~
并使用ÿ
{-ÿ] +`regex。
查看这些Ruby代码,
[ -@[-
打印
s = '[MV] SUNMI(선미) _ 누아르(Noir)'
puts s.split(/[ -@\[-`{-~]+/)
答案 1 :(得分:0)
(?:[^a-zA-Z0-9](?<![^\x00-\x7F]))+
https://regex101.com/r/EDyluc/1
您要保留的内容不匹配(保留为拆分状态)。
解释:
(?:
[^a-zA-Z0-9] # Not Ascii AlphaNum
(?<! [^\x00-\x7F] ) # Behind, not not Ascii range (Ascii boundary)
)+
如果您需要更详细的说明,请告诉我。