我要确保用户以大写字母开头的段落,并以标点符号(。!?“)结尾。该段落可以包含多个句子。
类似地,我想选择确保结尾处没有标点符号的选项-这是针对其他区域的。
我已经可以对一个句号进行句号了,但是对于多个句子并没有通过:
^[A-Z][^\.]*\.$
示例段落:
这是一个测试!我想确保第一个字符是 大写字母,最后一个是标点符号,介于两者之间。
有什么想法吗?我是regex的新手,感谢您的帮助!
答案 0 :(得分:1)
您可以使用
^[A-Z][\s\S]*?[.!?](?:\n\n|\z)
请参见regex demo。确保已启用多行选项,以便^
可以匹配行的起始位置。
如果换行符是CRLF,请使用\r\n
而不是\n
,或者如果正则表达式支持\R
,请使用\R
。
详细信息
^
-一行的开头[A-Z]
-大写字母[\s\S]*?
-任意0个以上的字符,尽可能少[.!?]
-最后的标点符号.
,?
或!
(?:\n\n|\z)
-双换行符或字符串结尾。PHP正则表达式变体:
'~^[A-Z].*?[.!?](?:\n\n|\z)~sm'
或支持Unicode的Unicode:
'~^\p{Lu}.*?[.!?](?:\R\R|\z)~smu'