Regex, чтобы выбрать все запятые из строки, которые не имеют пробелов вокруг них - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу выделить все запятые в строке, которые не имеют пробелов вокруг.Предположим, у меня есть эта строка:

"He,she, They"

Я хочу выбрать только запятую между he и she.Я попробовал это по-русски и придумал это регулярное выражение:

(,[^(,\s)(\s,)])

Это выбирает запятую, которую я хочу, но также выбирает s, который является символом после него.

enter image description here

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

В Ruby вы можете использовать [[:space:]] для сопоставления с любым (Юникод) пробелом и [^[:space:]] для сопоставления с любым символом, кроме пробела.Использование этих классов символов внутри lookarounds решает проблему:

/(?<=[^[:space:]]),(?=[^[:space:]])/

См. Rubular demo

Здесь,

  • (?<=[^[:space:]]) - положительный вид сзади, который соответствует местоположению, которому непосредственно предшествует непробельный символ (если начальная позиция строки также должна совпадать, замените на (?<![[:space:]]))
  • , - запятая
  • (?=[^[:space:]]) - положительный прогноз, соответствующий местоположению, за которым сразу следует символ без пробела (если конечная позиция строки также должна совпадать, замените на (?![[:space:]])).
0 голосов
/ 18 декабря 2018

В вашем регулярном выражении (,[^(,\s)(\s,)]) вы записываете запятую, за которой следует отрицательный класс символов, который не соответствует ни одному из указанных символов, который также может быть записан как (,[^)(,\s]), который будет захватывать, например, ,s в группе,

То, что вы можете сделать, это использовать положительный взгляд в сторону и положительный взгляд сзади, чтобы проверить, что слева, а что справа, не является символом пробела \S:

(?<=\S),(?=\S)

Regex demo

0 голосов
/ 18 декабря 2018

Проверьте приведенное ниже регулярное выражение и используйте код, надеюсь, он вам поможет!

re = /[^\s](,)[^\s]/m
str = 'check ,my,domain, qwe,sd'

# Print the match result
str.scan(re) do |match|
puts match.to_s
end

Проверка LIVE DEMO HERE

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