2017-05-21 7 views
0

タイトルに記載されているとおり、私はgolangでプログラムを再現しています。私はこのパターンの開始と終了の区切り文字を持っており、文字列からそれらを抽出したいと思います。以下は、擬似コードである:要するにGolang Regexは、デリミタを含む2つの区切り文字の間のテキストを抽出します。

string := "... This is preceding text 
PATTERN BEGINS HERE (
pattern can continue for any number of lines... 
); 
this is trailing text that is not part of the pattern" 

私がしようとしていますどのような上記の例からである「パターンはここから始まります」で終わるで始まるパターンの出現するすべての抽出物です「);」そして、私はこの正規表現がどのように見えるかを理解するのに助けが必要です。

追加情報や状況が必要な場合は教えてください。

答えて

1

正規表現は、次のとおり

(?s).*一致複数行( Go regex syntaxを参照)ようにするフラグである
(?s)PATTERN BEGINS HERE.*?\); 

demo

0

正規表現見ないが、作品

func findInString(str, start, end string) ([]byte, error) { 
    var match []byte 
    index := strings.Index(str, start) 

    if index == -1 { 
     return match, errors.New("Not found") 
    } 

    index += len(start) 

    for { 
     char := str[index] 

     if strings.HasPrefix(str[index:index+len(match)], end) { 
      break 
     } 

     match = append(match, char) 
     index++ 
    } 

    return match, nil 
} 

EDIT:バイトとして個々の文字を処理し、バイト配列を返すことがベスト

関連する問題