Как получить только слова с помощью регулярных выражений - PullRequest
0 голосов
/ 29 сентября 2018

Используя выражение регулярного выражения, как я могу получить только слова, игнорируя при этом любые другие символы, такие как запятые, цифры и т. Д .?

val words = text.split("\b([-A-Za-z])+\b")

Например:

This is a nice day, my name is...

Я хочучтобы получить:

This, is, a, nice, day, my, name, is

при игнорировании , и ....

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018

Чтобы извлечь все слова, в том числе и переносные, вы можете использовать

"""\b[a-zA-Z]+(?:-[a-zA-Z]+)*\b""".r.findAllIn(s)

Для поддержки всех букв Юникода используйте \p{L} вместо [a-zA-Z] класса символов:

val s = "This is a nice day, my name is..."
val res = """\b\p{L}+(?:-\p{L}+)*\b""".r.findAllIn(s)
println(res.toList)
// => List(This, is, a, nice, day, my, name, is)

См. Scala демо .

0 голосов
/ 30 сентября 2018
val p ="""[[a-z][A-Z]]+""".r

В REPL:

scala> val text = "This is a nice day, my name is..."
text: String = This is a nice day, my name is...

scala> p.findAllIn(text).toArray
res24: Array[String] = Array(This, is, a, nice, day, my, name, is)

scala> val text = "This is a nice_day, my_name is..."
text: String = This is a nice_day, my_name is...

scala> p.findAllIn(text).toArray
res26: Array[String] = Array(This, is, a, nice, day, my, name, is)
0 голосов
/ 29 сентября 2018

Разбить строку на не-букву:

val words = text.split("[^-A-Za-z]+")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...