我有以下字串:
#index 1#n John Doe#a some University#pc 7#cn 4#hi 1#pi 0.5889
并想用正則運算式提取#n和下面之間的部分#。結果應該是:
"John Doe"
這適用于以下正則運算式:
(?<=#cn\s).(?:(?!#).)*
但是,如果字串如下所示:
#index 1#n #a some University#pc 7#cn 4#hi 1#pi 0.5889
正則運算式回傳:
"#a some University"
但我需要它回傳一個空字串。有人可以幫我解決這個問題嗎?
uj5u.com熱心網友回復:
您可以通過提取一個或多個字符而不是#after#n和一個空格來做到這一點:
(?<=#n\s)[^#]
請參閱正則運算式演示。的(?<=#n\s)正回顧后立即匹配前面有一個位置#n和一個空白,并且[^#] 比其它的一個或多個字符相匹配#。
如果可以有任何一個或多個空格,則可以使用捕獲組。在 PySpark 中,它看起來像
df.withColumn("result", regexp_extract(col("source"), r"#n\s ([^#] )", 1))
請參閱此正則運算式演示。使用#n\s ([^#] ),您可以匹配#n一個或多個空格,然后將一個或多個非空格捕獲#到組 1 中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/383628.html
