Имя пользователя Yahoo Regex

Вы можете попробовать следующим образом:

import org.apache.spark.sql.functions.{length, max}
import spark.implicits._

val df = Seq(("abc","abcd","abcdef"),
          ("a","BCBDFG","qddfde"),
          ("MN","1234B678","sd"),
          (null,"","sd")).toDF("COL1","COL2","COL3")
df.cache()
val output = df.columns.map(c => (c, df.agg(max(length(df(s"$c")))).as[Int].first())).toSeq.toDF("COLUMN_NAME", "MAX_LENGTH")
        +-----------+----------+
        |COLUMN_NAME|MAX_LENGTH|
        +-----------+----------+
        |       COL1|         3|
        |       COL2|         8|
        |       COL3|         6|
        +-----------+----------+

Я думаю, что это хорошая идея, чтобы кэшировать входной фрейм данных df, чтобы ускорить вычисления.

9
задан Mohammad Naji 29 October 2012 в 09:47
поделиться

4 ответа

/^[A-Za-z](?=[A-Za-z0-9_.]{3,31}$)[a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*$/

Или немного короче:

/^[a-z](?=[\w.]{3,31}$)\w*\.?\w*$/i
16
ответ дан 4 December 2019 в 08:17
поделиться

Используя предвидения Вы могли сделать следующее:

^(?=[A-Za-z](?:\w*(?:\.\w*)?$))(\S{4,32})$

Поскольку Вы не указывали, в каком regex Вы нуждались, я добавил много Perl 5 совместимый материал. Как (?: ... ) для неполучения parens.

Примечание: Я добавил, что пропавшие без вести окружают paren назад.

1
ответ дан 4 December 2019 в 08:17
поделиться

Один точечный предел? Это хитро.

Я не regex эксперт, но я думаю, что это получило бы его, за исключением этого:

[A-Za-z][A-Za-z0-9_.]{3,31}

Возможно, Вы могли проверить на. требование отдельно?

2
ответ дан 4 December 2019 в 08:17
поделиться
/[a-zA-Z][a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*/

И проверьте если strlen ($username)> = 4 и <= 32.

7
ответ дан 4 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: