需要帮助提取文本同时排除其他字符

Need help extracting text while excluding other characters

这里是字符串:

Acanthite (Y: 1855) 02.BA.35 [18] [19] [20]
(IUPAC: Disilver sulfide)
Acetamide (1974-039) 10.AA.20 [21] [22] [23]
(IUPAC: Acetic acid amide)
Achalaite (2013-103) 04.?? [24] [no] [no]
Achavalite (Y: 1939

这是我的正则表达式:

([^B35\[1-9\] 0:Y\(\)\n-.?])+

我也试过:

^[a-z]+

我希望多行输出的内容是: (没有使用特定的编程语言)

Acanthite
Acetamide
Achalaite
Achavalite

只需添加不区分大小写的修饰符。或者您需要在字符 class.

中包含 A-Z
/^[a-z]+/im

(?im)^[a-z]+

(?m)^[a-zA-Z]+

使用这个模式

A\w*e\s

查看演示:https://regex101.com/r/hH8xD4/1

由于您有一个多行字符串作为输入并且您需要删除除以拉丁字母开头的行中的第一个单词之外的所有内容,您可以使用以下技巧:

  • 匹配并捕获一行中的第一个单词(因此,您需要 ^ 字符串开头锚点和 /m 多行修饰符)
  • 匹配行的其余部分和所有不以拉丁字母开头的子序列行。

正则表达式是:

(?im)^([a-z]+).*(\r?\n[^a-z].*)*

the demo

(?im)m 多行和 i ignorecase 标志的内联表示。

正则表达式细分:

  • ^ - 行首
  • ([a-z]+) - 1 个或多个拉丁字母
  • .* - 行的其余部分
  • (\r?\n[^a-z].*)* - 0 个或多个序列...
    • \r?\n - 换行符
    • [^a-z] - 拉丁字母以外的符号
    • .* - 行的其余部分

请注意,要匹配和删除字符串开头的非欢迎行,您需要将 (?:[^a-z].*\r?\n)* 子模式添加到开头:

(?im)^(?:[^a-z].*\r?\n)*([a-z]+).*(\r?\n[^a-z].*)*
       ^^^^^^^^^^^^^^^^^

another demo