0

私は定期的な表現に不慣れです。巨大なテキストがあります。アプリケーションでは、4文字の単語が必要で、残りを削除します。テキストはスペイン語です。これまでのところ、4文字の長さの単語を選択できますが、残りは削除する必要があります。

これが私の正規表現です

\s(\w{3,3}[a-zA-ZáéíóúäëïöüñÑ])\s

asp.net vbで4文字のすべての単語を取得するにはどうすればよいですか?

4

3 に答える 3

3

/(?:\A|(?<=\P{L}))(\p{L}{4})(?:(?=\P{L})|\z)/g

説明:

スイッチ/gは繰り返し検索用です

\A文字列の先頭です(行の先頭ではありません)

\p{L}カテゴリ文字の単一のコードポイントに一致します

\P{L}カテゴリ文字にない単一のコードポイントに一致します

{n}特定の繰り返し回数を指定します[ nは数値です]

\z文字列の終わりです(行の終わりではありません)

|論理OR演算子です

(?<=)後ろ向きです

(?=)先読みです

(?:)非後方参照グループ化です

()後方参照グループ化です

于 2012-04-19T22:58:34.570 に答える
2

別の回答で上記の文字クラスを使用する(残念ながら、\ wはスペイン語の文字と一致しません)。

これを一致に使用できます(逆に一致し、基本的に4文字の単語以外のすべてに一致するため、「」に置き換えて、4文字の単語のみを残すことができます)。

/(^|(?<=(?<=\W)[a-zA-ZáéíóúäëïöüñÑ]{4,4}(?=\W)))(.*?)((?=(?<=\W)[a-zA-ZáéíóúäëïöüñÑ]{4,4}(?=\W))|$)/gis

VBの近似コード(テストされていません):

  Dim input As String = "This is your text"
  Dim pattern As String = "/(^|(?<=(?<=\W)[a-zA-ZáéíóúäëïöüñÑ]{4,4}(?=\W)))(.*?)((?=(?<=\W)[a-zA-ZáéíóúäëïöüñÑ]{4,4}(?=\W))|$)/gis"
  Dim replacement As String = " "
  Dim rgx As New Regex(pattern)
  Dim result As String = rgx.Replace(input, replacement)

  Console.WriteLine("Original String: {0}", input)
  Console.WriteLine("Replacement String: {0}", result)                             

ここで、実際の正規表現の結果を確認できます。

http://regexr.com?30n29

于 2012-04-19T23:28:13.580 に答える
-2
\[^a-zA-ZáéíóúäëïöüñÑ][a-zA-ZáéíóúäëïöüñÑ]{4}[^a-zA-ZáéíóúäëïöüñÑ]\g

翻訳:非文字、4文字、非文字が続きます。示されている「g」はグローバルに一致します...複数回。

マッチのループに関する詳細については、次のリンクを確認してください:http: //osherove.com/blog/2003/5/12/practical-parsing-using-groups-in-regular-expressions.html

于 2012-04-19T22:46:02.803 に答える