2016-10-11 4 views
2

私は、改行だけを削除したい文字列があります。直後に小文字が付きます。例えば、私の文字列が含まれる場合があります。rで特定の正規表現を削除する

として現れますテキスト\ rをする\ nは別のライン\ rを\テキストNOFの

1行、

1ラインテキストの

別の行

テキスト。この例では

、私はテキストのみで、その後読んでいましたように、第二の改行を削除したい:テキスト

1行のテキスト

の別のライン

私はパターンが "\ r \ n [az]"であることを知っていますので、コードは次のようになります

gsub("\r\n[a-z]","") 

しかし、私は小文字の文字を維持しながら改行を削除するコードを考え出すことはできません。

ありがとうございます!

答えて

2

私たちは、あなたがこのためにpositive lookaheadを使用する必要がある正規表現の前後参照

txtN <- gsub("\r\n(?=[a-z])", "", txt, perl = TRUE) 
cat(txtN, sep="\n") 
# one line of text 
# another line of text, 
+1

これは完全に働いた!ご助力ありがとうございます。 – nhoff

1

を使用することができます。

text = "one line of text \r\n another line \r\nof text," 

fixed = gsub("\r\n(?=[a-z])", "", text, perl = T) 

cat(fixed) 
#> one line of text 
#> another line of text, 
+0

これは私が – akrun

+0

に非常に感謝して投稿したものに似ています! – nhoff

2

はあなたがパターンの周り(...)を使用する場合はIDEONE demo

を参照してください前後参照せずに何が必要を達成し、

s <- "one line of text \r\n another line \r\nof text," 
res <- gsub("\r?\n([a-z])","\\1", s) 
cat(res) 

のようなTRE正規表現を使用することがあります。たとえば

キャプチャグループを定義し、その内容をレプリケームから参照することができますntパターン。

パターンはの詳細:

  • \r?\n - 改行(\r\nまたは\nのいずれか)
  • ([a-z]) - グループ1内の小文字のASCII文字を。

交換

  • \1 - グループ1の内容に番号が付け後方参照。

詳しい情報について

PS:あなたはPCRE正規表現を使用することに熱心であれば、先読み以外の1つの非常に素敵な構築物がありますサポート - 任意のスタイル改行に一致する\R。次に、私は示唆したい:

gsub("\\R(?=[a-z])", "", txt, perl = TRUE)