【发布时间】:2020-01-23 23:23:28
【问题描述】:
我将选择第一次出现的唯一字母字符串,该字符串不以任何字符 "."、":" 和 ";" 结尾
例如:
"float a bbc 10" --> "float"
"float.h" --> null
"float:: namespace" --> "namesapace"
"float;" --> null
我想出了正则表达式\G([A-z]+)(?![:;\.]),但它只忽略了禁止字符之前的字符,而我需要它跳过禁止字符之前的所有字符串。
【问题讨论】:
-
无论是第一次出现还是全部出现,都是用代码来完成的。您需要的正则表达式是
(?<!\S)[A-Za-z]++(?![:;.])或(?<!\S)[A-Za-z]+\b(?![:;.])。好吧,你也可以使用^.*?\K(?<!\S)[A-Za-z]++(?![:;.])(PCRE) 或者在^.*?(?<!\S)([A-Za-z]+)\b(?![:;.])中获取Group 1 -
@WiktorStribiżew 是的,它可以工作,我正在使用 Perl,
(?<!\S)[A-Za-z]++(?![:;.])工作得很好。谢谢,伙计!
标签: regex regex-negation