Scala регулярное выражение и скобки - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть следующая строка:

tagged.big) AND tagged.medium

Мне нужно извлечь из этой строки все, что начинается с тега. и заканчивается одним или несколькими пробелами или )

Это мой текущий шаблон регулярных выражений:

tagged\.[\),\S]+

Из строки примера я ожидаю:

tagged.big
tagged.medium

но сейчас возвращается:

tagged.big)
tagged.medium

Что я делаю не так и как это исправить?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

В своем регулярном выражении вы используете tagged\.[\),\S]+, который содержит класс символов с ), запятую и \S, который не является символом пробела. \S также соответствует запятой и ), так что его можно сократить до \S+. Но это было бы слишком много.

Чтобы соответствовать вашим значениям, вы можете, например, использовать слово-символ \w или добавить к классу символов то, что вы хотите сопоставить:

tagged\.\w+

Regex demo

Это будет соответствовать

  • tagged\. Совпадает с тегом.
  • \w+ Совпадение 1+ символов слова

Regex demo

0 голосов
/ 10 ноября 2018

Окончательный шаблон: с тегом. [^ \ W \ s] + (Вы можете увидеть дальнейшее объяснение на сайте)

Итак, следует:

  • помечены. : соответствует любой строке, начинающейся с тега .
  • [^]: соответствует одному символу, который НЕ представлен на множестве.
  • [^ \ W \ s]: соответствует одному символу, который не является ни словом, ни пробелом
  • + : квантификатор жадный, соответствует одному или неограниченному числу раз, установленному.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...