2015-06-18 3 views
-3

Я хочу, чтобы захватить все первое вхождение строки, которая затем "genome_" но прервалась до ",(" и заменить его с определенной строкой, скажем "XXX"Regex не работает для нескольких шаблонов встречаемости

В тексте ниже:

(ID_Bxylanisolvens_NLAE-ZL-C182_genome_orf00003 ____ Bxylanisolvens_NLAE -.._ 843_unknown ___ 1278-2120_1 _ ^^ neighbours_ID_Bxylanisolvens_NLAE-ZL-C182_genome_orf00002_1__ID_Bxylanisolvens_NLAE-ZL-C182_genome_orf00004_1__neighbour_genes_Bxylanisolvens_NLAE -.._ Bxylanisolvens_NLAE- ..: +0,00000230914009336068 ((ID_Bxylanisolvens_NLAE-ZL-G421_genome_orf00003 ____ Bxylanisolvens_NLAE -.._ 843_unknown ___ 1315-2157_1 _ ^^ neighbours_ID_Bxylanisolvens_NLAE-ZL-G421_genome_orf00002_1__ID_Bxylanisolvens_NLAE-ZL-G421_genome_orf00004_1__neighbour_genes_Bxylanisolvens_NLAE -.._ Bxylanisolvens_NLAE- ..: 0,00000230914009336068, ID_Bxylanisolvens_NLAE-ZL-C339_genome_orf00003 ____ Bxylanisolvens_NLAE -.._ 843_unknown ___ 1084- 1926_1 _ ^^ neighbours_ID_Bxylanisolvens_NLAE-ZL-C339_genome_orf00002_1__ID_Bxylanisolvens_NLAE-ZL-C339_genome_orf00004_1__neighbour_genes_Bxylanisolvens_NLAE -.._ Bxylanisolvens_NLAE- ..: 0,00000230914009336068) 28: +0,00000230914009336068, (

желаемого результата:

(ID_Bxylanisolvens_NLAE-ZL-C182_XXX ((ID_Bxylanisolvens_NLAE-ZL-G421_XXX, (

+0

желаемого результата: (ID_Bxylanisolvens_NLAE-ZL-C182_XXX ((ID_Bxylanisolvens_NLAE-ZL-G421_XXX ( – ap88

+0

Какой вкус регулярных выражений вы используете (PCRE, Python), JavaScript) Что вы пробовали – Jota

+0

я использую? Python's re module попробовал несколько шаблонов: '_genome _. * \, \ (' И '_genome _. *? \, \ (' – ap88

ответ

1

на основе данных выборки и желаемый результат, позитивный взгляд вокруг должно помочь:

(?<=ID_Bxylanisolvens_NLAE-zl-[A-Z]\d{3,3}_)(genome.*?)(?=,\() 
  • (?<=ID_Bxylanisolvens_NLAE-zl-[A-Z]\d{3,3}_) оглядывается назад и проверяет эту конкретную последовательность символов. Может потребоваться корректировка в зависимости от изменчивости фактических данных.
  • (genome.*?) ловит бит для замены - с вопросительным знаком, делающим его неживым.
  • (?=,\() с нетерпением ждет комбинации символов, чтобы разделить часть, подлежащую отбрасыванию.

См. Его в действии: RegEx101.
Прокомментируйте, если и как требуется дополнительная деталь/настройка.

Смежные вопросы