C# 当单词在新行中时,如何提取匹配后的单词?

C# 当单词在新行中时,如何提取匹配后的单词?,c#,regex,C#,Regex,我从PDF中提取了以下文本: asssd 姓名 约翰·史密斯 特殊数据 我想提取姓名和姓氏(约翰·史密斯)。 我创建了以下正则表达式:Name Lastname\s+(.*)$在我测试它时可以使用,但在基于C#的软件中不能使用 还有其他方法吗?如果您执行以下操作,则上面的示例会起作用 在姓氏后添加空格 将选项设置为“多行” 将选项设置为忽略大小写 您可以通过以下方式实现: RegexOptions options = RegexOptions.IgnoreCase | RegexOptions

我从PDF中提取了以下文本:

asssd
姓名
约翰·史密斯
特殊数据
我想提取姓名和姓氏(约翰·史密斯)。 我创建了以下正则表达式:
Name Lastname\s+(.*)$
在我测试它时可以使用,但在基于C#的软件中不能使用


还有其他方法吗?

如果您执行以下操作,则上面的示例会起作用

在姓氏后添加空格 将选项设置为“多行” 将选项设置为忽略大小写

您可以通过以下方式实现:

RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Multiline;
您的正则表达式使用大写N和大写L

此外,表达式中的\s+表示需要在匹配组之前找到至少一个空格。因此,如果您知道将有一个换行符,那么您可能需要删除它并修剪结果或查找换行符

Expresso是一个方便的正则表达式工具,用于构建.Net友好的正则表达式。大多数情况下,导致平台之间出现问题的是选项。

删除
$
。另外,请确保使用
RegexOptions.IgnoreCase
。请参见,您需要指定
多行
标志,以便
$
匹配行尾(否则它仅匹配文本结尾)作为起点
(?不需要
RegexOptions。多行
,因为
$
是冗余的,必须从模式中删除。