7

Rの文字列で一意の文字(私の場合は&)の前後に単語を取得する必要があります。

「...何かword1とword2何か...」のようなものから「word1」を取得する必要があります。

RでPerl正規表現を使用した後、単語を取得できます:((?<=& )[^ ]*(?= ) 希望どおりに動作しているようです。このサイトで見つけた回答を組み合わせて取得しました)

&次に、記号の前にある単語を取得する必要があります。単語の長さが変わり、先行する他の単語の数、さらにはスペースも変わります。単語1は、文字と数字で、両側がスペースで囲まれている可能性があります。

4

4 に答える 4

16

使用する(\S+)\s*&\s*(\S+)と、両側の単語&がキャプチャされます。これにより、アンパサンドの周囲にオプションの空白が可能になります。

R文字列の円記号を2倍にし、regexecandregmatches関数を使用してパターンを適用し、一致した部分文字列を抽出する必要があります。

string  <- "...something something word1 & word2 something..."
pattern <- "(\\S+)\\s*&\\s*(\\S+)"
match   <- regexec(pattern, string)
words   <- regmatches(string, match)

これwordsは、3項目のベクトルを保持する1要素のリストです。一致した文字列全体の後に1番目と2番目の後方参照が続きます。そうwords[[1]][2]ですword1、そしてwords[[1]][3]ですword2

于 2013-02-19T00:46:08.813 に答える
5
(?<=&)(\w*)(?=&)"

&記号間の単語文字であるものすべてに一致します。ポジティブルックビハインドとポジティブルックアヘッドを使用します。

于 2013-02-19T00:48:47.677 に答える
2
\b(.*?)\b&

単語はグループ1にキャプチャされます。これは、2つの境界で囲まれた文字列に含まれる気が進まない一致です。2番目の境界の後は&

于 2013-02-19T00:41:50.190 に答える
1

strapplycこれは、gsubfnパッケージで使用する比較的単純な正規表現で実行できます。あなたの文字列を仮定sします:

library(gsubfn)
strapplyc(s, "(\\w+) & (\\w+)")
于 2013-02-19T02:19:48.827 に答える