我想更清楚地摘录文字部分。因为我将使用Movable Type的regex_replace函数,所以我会在前几句话之后尝试抓住所有内容。
虽然\..*
在第一个时期之后获得了所有内容,但这通常会留下太短的摘录。我怎么可能做同样的事情(第一期后的所有事情)但跳过前100个字符?
或者,我会如何在第二或第三期之后抓住所有内容?
答案 0 :(得分:0)
不熟悉regex_replace
,我将使用PHP preg_replace
功能,您可以相应地进行调整:
$truncated = preg_replace('/^(.{100}.*?\.).*$/s', '$1', $long);
编辑:我不知道输出上的语法突出显示是什么,将整个事物视为一个字符串,它在预览中看起来很好。
还有另一个版本,它会尝试聪明地不分解带小数点的数字(或者句子可能出现在句子末尾以外的其他地方):
$truncated = preg_replace('/^(.{100}.*?\.(?![a-z0-9])).*$/s', '$1', $long);
说明:
.{100}
.*?\.
(?![a-z0-9])
- 如果句点字符后跟数字或字母,这将导致最后一部分继续到下一个小数位。s
修饰符)。如果Movable Type的regex_replace
函数采用没有分隔符的模式(模式中的前导斜杠和尾随/s
),则可以在模式的开头使用(?s)
。$1
以保留第一个捕获的组。答案 1 :(得分:0)
完整的句子含糊不清,因为不同的语言有不同的编码句末的方法。我们假设一段时间后的空格是EOS:
/^.*?\.\s+(?:.{N})(.*)/
将N替换为所需的数字。