2017-08-08 6 views
0

入力ファイル:マッチハイフン/ダッシュ特定の文字の隣に

>AMSF107-09|Perciformes|COI-5P|GU661092 
TAGTA- 
>AMSF114-09|Perciformes|COI-5P|GU661101 
C-ACGC 
>ANGBF3683-12|Haemulon_sp._B_JJT-2012|COI-5P|JQ741244 
-GCAGTT-CA- 
私は、 TAGTA-C-ACGCをハイフンを置き換えたい

、および-GCAGTT-CA-N年代ではなく、ヘッダ(>で始まる行を残します)そのまま。 ACG、またはTの横にハイフンと一致する正規表現を探していますが、>文字で始まる一致は除外しています。

所望の出力

>AMSF107-09|Perciformes|COI-5P|GU661092 
TAGTAN 
>AMSF114-09|Perciformes|COI-5P|GU661101 
CNACGC 
>ANGBF3683-12|Haemulon_sp._B_JJT-2012|COI-5P|JQ741244 
NGCAGTTNCAN 

EDIT: 私は正規表現では非常に基本を知っています。これまで私は(ACGT)?\-(ACGT)?を試しましたが、それはすべてのハイフンに一致します。

+0

これまでに何を試みましたか? – Utkanos

+0

私は正規表現 – cooldood3490

答えて

1

これはACGまたはTが先行ハイフンにマッチする:(?<=[ACGT])-

+0

の非常に基本的なことしか知りませんが、それは3番目のヘッダのTにも一致します。 '> ANGBF3683-12 | Haemulon_sp._B_JJT-2012 | COI-5P | JQ741244' – cooldood3490

+0

あなたが書いている言語は何ですか?行をフィルタリングする簡単なメソッドを追加することができます – gribvirus74

+0

Find&Replace関数を使ってSublimeでテキストファイルを編集しています。私はFindセクションに正規表現を置き、Replaceセクションには 'N'を置いています。 – cooldood3490

1

ので、-含むTを、これはまさにちょうどハイフンを見つけることができませんが、それは任意の組み合わせAを見つけるだろう、CG 。ここregexは次のとおりです。

(?=[ACGT-]+$)(?=(?:[^-]*[-])+).* 

あなたはsplitstringオフのこの試合があり、その後、.replace('-', 'N');を行うと、あなたのデータ文字列の末尾に背面にそれを連結し、一時変数に保存します。お役に立てれば!

+0

お待ちください、そうではありません。私はそれをテストしたと思ったが、まだバグがある。私はそれを修正することができますか?問題は、指定された文字のいずれかがすでに文字列に存在する限り、任意の文字または数字を入力できることです。私はそれに取り組もうとしています。 –

+0

@ cooldood3490が間違って貼り付けられた間違った 'regex'は、今更新されています。 –

+0

私はあなたの助けに感謝します – cooldood3490

関連する問題