Regex для токенизации строки в массив числовых и буквенно-цифровых строк в Scala - PullRequest
2 голосов
/ 15 апреля 2019

У меня есть несколько строк, для которых я хочу токенизировать

например:

123ae4rf468 to be split into [123,ae4rf,468] 
878768stb4hgbjh354 to be split into [878768,stb4hgbjh,354]

Я попробовал ниже, но не сработало. Пожалуйста, помогите

 def groupStrings(): Unit ={
    val pattern: Regex = "\"[^A-Z0-9]+|(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z])\"".r
    for(patternMatch <- pattern.findAllMatchIn("12341abc1234"))
      println(patternMatch.groupCount)
  }

Ответы [ 2 ]

3 голосов
/ 15 апреля 2019

Вы можете использовать это

(^\d+)(.*?)(?<=[a-z])(\d+)$
  • (^\d+) - Соответствует цифрам в начале строки
  • (.+?) - сопоставить все, кроме новой строки, один или несколько раз
  • (?<=[a-z])(\d+)$ - положительный вид сзади соответствует цифрам, которым предшествует символ в конце строки

Демо

Примечание на стороне: - Если вам не нужны группы, вы можете перейти на это

^\d+.*?(?<=[a-z])\d+$
0 голосов
/ 15 апреля 2019

попробуйте (\d+|\D+)
или (\D+(?:\d*\D)*|\d+)
или (\D+(?:\d*\D+)?|\d+)

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