Ruby - разбить на не буквенно-цифровые символы, кроме международных символов? - PullRequest
0 голосов
/ 04 марта 2019

Это мое регулярное выражение, которое будет разбито на не алфавитно-цифровые символы, включая международные символы (например, корейские, японские, китайские символы).

title = '[MV] SUNMI(선미) _ 누아르(Noir)'
title.split(/[^a-zA-Z0-9 ']/)

это регулярное выражение для соответствия любому международному символу:

[^\x00-\x7F]+

Что я получил от: Регулярное выражение для сопоставления с неанглийскими символами? Давайте скажем, что это на 100% правильно (без обсуждения!)

Какобъединить эти 2, чтобы разделить не алфавитно-цифровые символы, кроме международных символов?Легкая часть сделана.Мне просто нужно как-то объединить эти регулярные выражения.

Мой ожидаемый результат будет примерно таким:

["MV", "SUNMI", "선미", "누아르", "Noir"]

TLDR: я хочу разбить только на не алфавитно-цифровые символы (английские буквы, иностранные символы)следует не делиться на)

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

(?:[^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)
 )+

Дайте мне знать, если вам нужно более подробное объяснение.

0 голосов
/ 04 марта 2019

Таким образом, вы хотите разделить все символы ascii, но не на алфавит.Вы можете использовать это регулярное выражение, которое выбирает все символы в диапазоне ascii.

[ -@[-`{-~]+

Это регулярное выражение имеет интервалы пробелов до @, затем игнорирует все заглавные буквы, затем выбирает все символы от [ до обратной черты, затем игнорирует все строчныеЗатем он выбирает все символы от { до ~, как видно из таблицы ascii.

Если вы хотите исключить до расширенных символов ascii, вы можете изменить ~ в регулярном выражении с помощью ÿи используйте [ -@[- {- ÿ] + `regex.

Демонстрация

Проверьте эти коды Ruby,

s = '[MV] SUNMI(선미) _ 누아르(Noir)'
puts s.split(/[ -@\[-`{-~]+/)

Отпечатки,

MV
SUNMI
선미
누아르
Noir

Демоверсия Ruby

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...