Как извлечь строковую информацию из этих двух строк? - PullRequest
0 голосов
/ 11 марта 2020

Я хочу написать один код регулярного выражения для извлечения строки из этих двух строк:

string1 = '@HISEQ:625:HC2T5BCXY:1:1101:1177:2101'
string2 = '@SRR7216015.1 HISEQ:630:HC2VKBCXY:1:1101:1177:2073/1'

Я хочу извлечь строку сразу после @, пока она не достигнет конца или пробела, чтобы получить

HISEQ:625:HC2T5BCXY:1:1101:1177:2101 from string1

или

SRR7216015.1 from string2

Итак, как это сделать. Я протестировал несколько кодов регулярных выражений, но не смог этого сделать.

Ниже приведен код, который я пробовал:

string1 = '@HISEQ:625:HC2T5BCXY:1:1101:1177:2101'
string2 = '@SRR7216015.1 HISEQ:630:HC2VKBCXY:1:1101:1177:2073/1'
pattern1 = re.compile(r'@(\w*.*:*\d*:*\w*:*\d*:*\d*[$|\s])')
print(pattern1.search(string1).group(1))

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Просто используйте

@(\S+)

и возьмите первую группу. Посмотревшие или чередующиеся - как предлагается в других ответах - дороги.

0 голосов
/ 11 марта 2020

Вы можете использовать это регулярное выражение для этого:

(?<=@).*?(?= |$)

Использовать обходные пути. (?<=@) проверяет наличие @ signt перед, (?= |$) соответствует пробелам или концу строки. .* соответствует всему между

https://regex101.com/r/p7kI2O/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...