Как сопоставить строку до первой запятой (если есть) с регулярным выражением Ruby - PullRequest
7 голосов
/ 27 октября 2010

Я изо всех сил пытаюсь получить регулярное выражение (в Ruby), которое даст следующее

"one, two" -> "one"
"one, two, three" -> "one"
"one two three" -> "one two three"

Я хочу сопоставить любые символы вплоть до первой запятой в строке. Если запятых нет, я хочу, чтобы вся строка соответствовала. Мое лучшее усилие на данный момент -

/.*(?=,)?/

Это приводит к следующему выводу из приведенных выше примеров

"one, two" -> "one"
"one, two, three" -> "one, two"
"one two three" -> "one two three"

Близко, но без сигары. Кто-нибудь может помочь?

Ответы [ 4 ]

15 голосов
/ 27 октября 2010

Имеет ли регулярное выражение?Другое решение:

text.split(',').first
15 голосов
/ 27 октября 2010

Мне интересно, не может ли быть проще:

/([^,]+)/
9 голосов
/ 27 октября 2010

Будет ли соответствовать только не запятые с самого начала работы? e.g.:

/^[^,]+/
2 голосов
/ 27 октября 2010

Как насчет /.*?(?=,|$)/ Таким образом, он либо читает до конца, либо до запятой.

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