Golang Go语言中 regex 匹配所有符合字符串
Golang Go语言中 regex 匹配所有符合字符串
我有下面这段字符串
text := 59-1124043-1053 - FLOATING JOINT4PC15-Feb-2020 Purchase PriceUSD 28.00112.00per 1 PCTaxable: N Resale: N<70.000KG DHL Express - Intl Shpts 962183650SCAC1:DHLCOver70.000KG Agility Logistics - Export StandardSCAC2:AGYC3 59-1124043-1055 - UNDER RAIL1PC15-Feb-2020 Purchase PriceUSD 138.00138.00per 1 PCTaxable: N Resale: N<70.000KG DHL Express - Intl Shpts 962183650SCAC1:DHLCOver70.000KG Agility Logistics - Export StandardSCAC2:AGYC4 59-1124043-1056 - UPPER RAIL1PC15-Feb-2020
通过正则规则
PNExprV2 = [^(-138)][\d]+-.*[\d][\s]+.*[\d]{1}[a-zA-Z]{2}[\d]{2}-[a-zA-Z]{3}-[\d]{4}
PNParser := regexp.MustCompile(PNExprV2)
line1 := PNParser.FindAllStringSubmatch(c, 10)
匹配出来的还是原字符串 期待匹配结果是 ["59-1124043-1053 - FLOATING JOINT4PC15-Feb-2020", ..., "59-1124043-1056 - UPPER RAIL1PC15-Feb-2020"]
请大佬们帮忙看看
更多关于Golang Go语言中 regex 匹配所有符合字符串的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
.*就已经匹配完了后面的所有字符串。
[^(-138)][\d]±[\d]±[\d]+\s-\s[a-zA-Z]+\s[a-zA-Z0-9]±[a-zA-Z]±[\d]+
这个能匹配出来,但是我也是个菜鸟,还是等大佬的吧。
更多关于Golang Go语言中 regex 匹配所有符合字符串的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
有什么特殊要求么?
[^(-138)] 看起来你想不以 -, 1, 3, 8 开头? 那么不需要括号, 直接 [^-138] 就好. 除非你是想不以整个 -138 开头.
其他方便好像没看出什么来.
简单的话就 “\d±\d±\d+ - \w+ \w±\w{3}-\d{4}”
PS: 不要滥用 .*
测试可以用这个网站: https://regex101.com/
感谢两位,这段文本可以匹配了,我在试试看其他文本。谢谢
大佬能帮忙看看新的么
“\d±\d±\w+( - \w+)? \w±\w{3}-\d{4}”
“611-0571271-20126 8PC03-Feb-2020” 这个字符串中间没有之前 “59-1124043-1053 - FLOATING JOINT4PC15-Feb-2020” 中的 " - FLOATING" 改成可选的就行.
然后 “811-0571378-5147B 7PC03-Feb-2020” 中的 “5147B” 出现了字母, 用字符匹配.
推荐一下 <regular expression> 这本书. 简单的话 <正则表达式必知必会> 就几十页, 上班通勤就完全搞定. 基本上大多简单的问题都能解决.
感谢
我这个比较复杂并且不是很通用
如下字符
···
611-0571271-20126 8PC03-Feb-2020DEBURR INSERTMaterial revision level: A Purchase PriceUSD 14.00112.00per 1 PCTaxable: N Resale: NRFQ# 170593<70.000KG DHL Express - Intl Shpts 962183650SCAC1:DHLCOver70.000KG Agility Logistics - Export StandardSCAC2:AGYC711-0571337-21531 5PC03-Feb-2020U-ING PUNCHMaterial revision level: B Purchase PriceUSD 41.00205.00per 1 PCTaxable: N Resale: NRFQ# 170593<70.000KG DHL Express - Intl Shpts 962183650SCAC1:DHLCOver70.000KG Agility Logistics - Export StandardSCAC2:AGYC811-0571378-5147B 7PC03-Feb-2020
59-1124043-1053 - FLOATING JOINT4PC15-Feb-2020 Purchase PriceUSD 28.00112.00per 1 PCTaxable: N Resale: N<70.000KG DHL Express - Intl Shpts 962183650SCAC1:DHLCOver70.000KG Agility Logistics - Export StandardSCAC2:AGYC3 59-1124043-1055 - UNDER RAIL1PC15-Feb-2020 Purchase PriceUSD 138.00138.00per 1 PCTaxable: N Resale: N<70.000KG DHL Express - Intl Shpts 962183650SCAC1:DHLCOver70.000KG Agility Logistics - Export StandardSCAC2:AGYC4 59-1124043-1056 - UPPER RAIL1PC15-Feb-2020
219-1895504 Die Sleeve, Floating Die Case6PC31-Jan-2020 Purchase PriceUSD 117.00702.00per 1 PCTaxable
119-1895433-00008 Punch Cap6PC31-Jan-2020 Purchase PriceUSD 95.0
are met for this material / product. This specification is available under Documents in the TE SupplierPortal at https://supplierportal.te.comGD40 - EACH LOT MUST INCLUDE AN INSPECTION REPORT, WITH 100% INSPECTION OF 10% OF THE PIECES, WITH A MINIMUM OF ONE PIECE INSPECTED AND A MAXIMUM OF 3 PIECES INSPECTED FOR EACH LOT.GD50 - EACH PIECE OF TOOLING TO BE CONSTRUCTED PER TE DRAWING AND SCRIBED IN A NON-FUNCTIONAL AREA WITH THE DETAIL NUMBER, REVISION LEVEL AND SUPPLIER NUMBER. SEE PURCHASE ORDER FOR SUPPLIER NUMBER. IF SIZE IS RESTRICTED, BAG AND TAG EACH PIECE WITH THE SAME INFORMATION.GE26 - THE VALUE OF THIS PO IS NOT CONSIDERED AN “ASSIST” BY U.S.CUSTOMS.119-1895433-00008 Punch Cap6PC31-Jan-2020 219-1895504 Die Sleeve, Floating Die Case6PC31-Jan-2020
···
我最后用了
(\d±\d±[\d]+|\d±\d+)(.*?)\d{1,2}\w{2}\d{2}-\w{3}-\d{4}
在Go语言中,使用正则表达式(regex)匹配所有符合特定模式的字符串通常涉及使用标准库中的regexp
包。以下是一个基本的示例,展示了如何匹配所有符合某个模式的字符串:
-
导入
regexp
包:import ( "fmt" "regexp" )
-
编写正则表达式: 假设我们要匹配所有包含数字的字符串,正则表达式可以是
\d+
(表示一个或多个数字)。 -
编译正则表达式并匹配:
func main() { // 示例字符串切片 texts := []string{"abc123", "def456", "ghi", "789jkl"} // 编译正则表达式 re := regexp.MustCompile(`\d+`) // 遍历字符串切片并查找匹配项 for _, text := range texts { if match := re.FindString(text); match != "" { fmt.Println("Matched:", match, "in", text) } else { fmt.Println("No match in", text) } } }
-
运行程序: 上述代码将输出所有包含数字的字符串及其匹配部分。
请注意,FindString
方法返回字符串中的第一个匹配项。如果需要查找所有匹配项,可以使用FindAllString
方法。此外,确保正则表达式正确无误,并根据实际需求调整模式。在处理复杂模式时,可以利用正则表达式在线测试工具进行调试。