簡體   English   中英

golang如何使用正則表達式將字符串拆分為包含分界符的切片

[英]golang how to split a string to a slice containing the delimeters using a regular expression

我想將字符串分割為一個切片,但要保留定界符。 有沒有辦法在golang中做到這一點?

例如

輸入:

"Hello! It's, a? beautiful$ day* (today and tomorrow).

輸出:

[Hello | ! | It's | , | a | ? | beautiful | $ | day | * | ( | today | and | tomorrow | ) | . ]

其中| 代表元素的分離。

有人可以幫忙嗎?

您可以通過創建與一個單詞或一個特殊字符匹配的正則表達式來做到這一點。 我不知道您的規則到底是什么,但是給定輸入和所需的輸出,這可行:

[A-Za-z']+|[*?()$.,!]

然后,您可以使用FindAllString返回單個字符串。

參見https://play.golang.org/p/se6B74G_Fv

正則表達式的想法是匹配一個單詞(在此定義為一個或多個大寫或小寫字母或撇號的序列)或一個“特殊字符”(定義為示例輸入中的任何非單詞字符) 。 正則表達式包含兩部分,中間用|分隔| ,表示這兩種選擇都可以匹配。 方括號中包含的一組字符稱為字符類 ,這意味着任何字符都可以匹配(而az表示從a到z的所有字符)。 由於左選擇是一個字符類,后跟一個+ ,因此該類中的一個或多個字符將匹配。 右邊的部分僅匹配一個字符。 您可能需要對其進行調整,使其行為完全符合您想要的方式。 有關Go正則表達式的更多信息,請參見https://github.com/google/re2/wiki/Syntax

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM