ホームページ  >  記事  >  バックエンド開発  >  正規表現とテキストマイニング -- テキストマイニング

正規表現とテキストマイニング -- テキストマイニング

伊谢尔伦
伊谢尔伦オリジナル
2016-12-05 11:56:331437ブラウズ

テキスト マイニングを実行する場合、TSQL のワイルドカード文字 (Wildchar) では不十分なようです。現時点では、「CLR + 正規表現」を使用するのが非常に良い選択であるようですが、正規表現は変わりません。正規表現のメタデータに精通している場合は、正規表現を熟練かつ柔軟に使用して、複雑なテキスト マイニング作業を完了することができます。

1. 正規表現の特殊文字

は、特定の文字 (文字、数字、記号) と一致するために使用されます。

: 改行を除いて一致します。文字

w: 文字、数字、アンダースコア、または中国語の文字と一致します

s: 任意の空白文字と一致します
d: 数字と一致します
b: 単語の先頭または末尾と一致します
^: 文字列の先頭と一致します
$: 文字列と一致します文字列
k の終わり: グループ名への参照。例: k、group_name という名前のグループを参照することを意味します
group_number: group_number はグループのグループ番号です。1、2、3 などは、グループを参照することを意味します。グループ番号
2 を使用してグループ化し、文字またはグループを繰り返します

前の文字またはグループを繰り返す回数を指定します:

: 0 回以上繰り返します

: 1 回以上繰り返します

?: 0 回または 1 回繰り返しますtime

{n}: n 回繰り返す
{n ,}: n 回以上繰り返す
{n,m}: n ~ m 回繰り返す
3、グループ化、エスケープ、分岐、修飾子

これらの文字には特定の意味があり、使用:

(): 括弧を使用してグループを表します

<>: グループ名を定義します < (" の間の文字列、括弧は特殊文字として使用されなくなりました

|: 分岐、式は「or」に関連します
[]: 修飾された文字のリストを指定します。1 つの文字はリスト内の任意の文字と一致する必要があります。一致する文字は角かっこで指定します。例: [aeiou] 文字は aeiou 内のいずれか 1 つである必要があります。 : 除外文字のリストを指定します。文字は除外リスト内の任意の文字にすることはできません。除外文字リストは角かっこで指定します。例:[^aeiou] 文字は aeiou のいずれかにすることはできません。

グループ化は、括弧を使用して指定される部分式です。グループ化参照は、正規表現の記述をより簡潔にする、式内での部分式の繰り返しの使用を指します。デフォルトでは、正規表現によって各グループにグループ番号が自動的に割り当てられます。グループ番号は 1 から始まり、左から右に 1 ずつ増加します (base-1)。たとえば、最初のグループのグループ番号は 1、2 番目のグループのグループ番号は 2、

グループ化定義の 3 つの形式:

(exp): グループ化を通じてグループ番号を自動的に割り当てます。

(?exp): グループに名前を付け、グループ名を介してグループを参照します。

(?:exp): グループは現在の位置のテキストとのみ一致します。グループの後にはグループ名もグループ番号もありません。

1、グループ番号を使用してグループを参照します。

正規表現の前にグループ (exp) を定義し、正規表現の後にグループ番号を使用してグループの式を参照し、グループを参照できます。構文は次のとおりです: group_number;

例: b( w+)bs+1b。この正規表現にはグループ (w+) が 1 つだけあり、グループ番号は 1 です。グループの後に 1 をグループ化された部分式に置き換えます。これは次と同等です。 : b(w+)bs+(w+)b。

2. グループ名を使用してグループを参照する

正規表現では、グループ名を名前として指定できます。 : k, through グループ名とグループ番号はグループを指し、それらのテキスト一致動作は同じです。

例: b(?w+)bs+1b、グループの後ろで、k を使用してグループを参照し、k をグループの部分式に置き換えます。これは次と同等です: b(w+)bs+(w+ )b.

3、引用不可能なグループ

(?:exp): この構文を使用して定義されたグループは引用符で囲むことができず、現在の位置のテキストとのみ一致します。正規表現ではグループ番号が自動的にグループに割り当てられません。

三、アサーション検索

アサーションは論理式であり、その式が真である場合にのみマッチングが成功します。一致が成功した場合、返されるテキストにはプレフィックスやサフィックスは含まれません。つまり、アサーションは、特定の「テキスト」の前後にあるテキストを検索するために使用されます。アサーションの 4 つの構文:

(?=exp): テキストの後ろが式 exp と一致し、exp の位置の前の式が返されます。

(?<=exp): テキストの先頭が式と一致します。式

(?!exp): テキストの接尾辞が exp ではない場合、接尾辞が exp ではない式を返します

(? < !exp): 接頭辞テキストの exp が exp ではない、プレフィックスが exp ではない式を返す

1、サフィックスが一致する


(?=exp): テキストの後の式 exp と一致し、exp の位置の前の式を返します。接尾辞のマッチングは TSQL の「%ing」に似ています

たとえば、正規表現: bw+(?=ingb)

分析: その接尾辞が ing であり、それが単語の終わりであることをアサートします (b)、ing で終わる単語と一致しますが、単語の先頭部分、つまり ing より前の部分を返します

たとえば、「」を検索します。 I'm reading a book" の場合、文字が ing で終わるため、「reading」と一致します。正規表現は read を返し、返されたテキストにサフィックスが含まれていないことをアサートします。

2、プレフィックスマッチング

(?<=exp): テキストの先頭が式 exp と一致し、式 exp の位置の後の式が返されます。プレフィックス マッチングは TSQL の "re%" に似ています。たとえば、正規表現: (?<=bre)w+b

分析: 単語の先頭 (b)、単語のプレフィックスは re、 re で始まる単語は単語の後半、つまり re 以降の部分を返します

たとえば、「I am reading a book」を検索すると、文字が で始まるため「reading」と一致します。 re、正規表現は ading を返します。返されたテキストにプレフィックスが含まれていないことをアサートします。

3. プレフィックスまたはサフィックスが特定のテキストではないテキストを検索します。

これら 2 つのアサーション検索は、前の 2 つとは逆であり、ほとんど効果がありません。

(?!exp):テキストのsuffix is not exp, return suffixがexpではない式を返す

(? < !exp): テキストのprefixがexpではなく、prefixがexpではない式を返す
3.1たとえば、正規表現: bw+(?!ingb)

分析: ing と一致しません。「私は本を読んでいます」で終わる単語の場合、返されるテキストは次のとおりです: I,am,a,book

3.2 たとえば、次のようになります。正規表現: (?< !bre)w+b

分析: で終わる単語とは一致しません。re で始まる単語については、「I am reading a book」を検索すると、返されるテキストは次のとおりです: I, am 、本


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。