2017-09-24 43 views
-2

编写一个正则表达式模式,将英语句子的第一个单词放入寄存器中。还要注意标点符号。编写正则表达式,将英语句子的第一个单词放在寄存器中

这里是我的尝试:

[\.]\s*[A-Z] \1 

我似乎并没有收到此权利。我错过了什么?

+1

你的问题有点不清楚。你是否要求与英语句子中的第一个单词匹配的正则表达式模式?你是说你想让它与罗马字符中的第一个单词相匹配吗? –

+1

“注册”是什么意思?另外,你如何定义“单词”? – melpomene

回答

-1

描述的模式接近我可能使用的模式。它包含一些假设和错误,但它是正确的。

[.]\s*[A-Z] \1 

此模式匹配任何字符,后跟0或更多空格,后跟大写字母。我假设的\ 1是为了输出第一个捕获组,但你没有指定任何捕获组。你会想用圆括号来做。

句点(。)是正则表达式中的一个特殊字符,所以如果你想匹配句末的句点,你需要寻找一个转义期\.。这假定所有的句子都以句点结束,但情况可能并非如此。我可能会尝试一套较为完整的句子终止的

[\.!\?]["']?\s+([A-Z][a-z]*) 

这种模式匹配任何时期,感叹号或问号,后面可以跟单或双引号,后跟一个或多个空格,大写字母和零个或多个小写字母的序列。它捕获最后一部分,即大写字母的大写字母,直到最后一个小写字母。

此模式捕捉除第一句话的第一个单词之外的所有内容,该单词不遵循任何标点符号。我可能会使用一个单独的模式。

^\s*([A-Z][a-z]*) 

此模式仅在文本的开头匹配,其中有零个或多个空格,后跟大写字。它捕获大写的单词。

+1

在方括号中使用的时段只是一段时间。它不需要被转义。同问号。 –

相关问题