在MySQL中通过正则表达式搜索这种类型的值的最佳方法是什么?
“ ABCDE / + 19876543210 @ abc-def”
case class Employee(id: String, name: String, experience: Int)
case class Manager(employee: Employee)
object Your_Code extends App {
def promoteEmployee(employee: Employee) =
Manager(employee)
def promoteEmployeesToManager(list: List[Employee]) : Set[Manager] = {
list.foldLeft(Set[Manager]())((a, b) => if(b.experience > 5) a + promoteEmployee(b) else a)
}
val employess = List(Employee("id1", "name1", 6), Employee("id1", "name1", 4))
println(promoteEmployeesToManager(employess))
}
表示不变的特定值
ABCDE/
也代表不变的特定值
我在下面的失败尝试:
@abc-def
答案 0 :(得分:1)
答案 1 :(得分:0)
+
是一个正则表达式元字符,因此,如果要匹配文字+
,则必须对其进行转义。而且由于\
是一个字符串元字符,所以您也必须对其进行转义。
mysql> select 'ABCDE/+19876543210@abc-def' regexp
'^ABCDE/\\+1(123|234|345|456)[0-9]{7}@abc-def$' as is_match;
+----------+
| is_match |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
mysql> select 'ABCDE/+12346543210@abc-def' regexp
'^ABCDE/\\+1(123|234|345|456)[0-9]{7}@abc-def$' as is_match;
+----------+
| is_match |
+----------+
| 1 |
+----------+
我不知道您为什么在正则表达式模式中使用\\
,因为这与示例字符串不匹配。
我不确定您的数字三位数是多少。他们是电话区号吗?您打算列出每个区号吗?