我逐行解析一些文本,如果给定的行以任何标点符号或数字结尾,我希望布尔值返回true.
正则表达式是最好的方法还是应该迭代一组字符来匹配?阵列的感觉会太大而且成本太高......
如果这确实是一个好方法,有人可以帮助我使用正则表达式吗?
function ends_with_punctuation_or_num($string){
// check if the string ends with punctuation or a number
if (/* TODO */)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*der 14
把它放入你的if-check:
preg_match("/[0-9.!?,;:]$/", $string)
Run Code Online (Sandbox Code Playgroud)
这将匹配一个数字,或者在字符串结束之前的任何给定标点符号($).将您想要视为匹配的任何其他标点字符添加到字符类(方括号)中.
标点符号的unicode属性是\p{P}或者\p{Punctuation}是数字的\pN.
在PHP中你可以使用:
preg_match('/[\p{P}\p{N}]$/u', $string);
Run Code Online (Sandbox Code Playgroud)
如果字符串以标点符号或数字结尾,则返回true.
看看这个网站.