- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用正则表达式将一大块中文文本拆分成句子。就我而言,句子分隔符是:
现在,假设我的 $str 是这样的:$str = "你好。你好吗?我是程序员,不太懂这个我的问题,希望大家能帮得上忙!一起加油吧!";
我使用带有这些参数的 preg_split:
$str2 = preg_split("/([\x{3002}\x{FF01}\x{FF1F}])/u",$str,PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
$str2 现在是一个数组,如下所示:
array(3) { [0]=> string(6) "你好" [1]=> string(9) "你好吗" [2]=> string(91) " 我是程序员,不太懂这个我问题,希望大家能够帮忙!一起加油吧!" }
然而,预期的输出是:
[0] "你好。"
[1] "你好吗?"
[2] "我是程序员,不太懂这个我问题,希望大家能够帮忙!"
[3] "一起加油吧!"
如您所见,存在两个问题:这不能正确处理感叹号,其次,我的全角句号和全角问号消失了。我希望 delim_capture 保留它们。我已经查看这段代码很长时间了,我不可能再弄清楚问题出在哪里了。我非常感谢您的建议。
最佳答案
您的正则表达式代码应该是这样的,以便能够捕获字符串 + 分隔符:
$str = "你好。你好吗? 我是程序员,不太懂这个我问题,希望大家能够帮忙!一起加油吧!";
$arr = preg_split("/\s*([^\x{3002}\x{FF01}\x{FF1F}]+[\x{3002}\x{FF01}\x{FF1F}]\s*)/u",
$str, 0, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY );
var_dump($arr);
输出:
array(4) {
[0]=> string(9) "你好。"
[1]=> string(13) "你好吗? "
[2]=> string(72) "我是程序员,不太懂这个我问题,希望大家能够帮忙!"
[3]=> string(18) "一起加油吧!"
}
关于php - unicode 模式下的 preg_split : delim_capture not working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9114166/
为了与 php 5.3 兼容,从 split 更改为 preg_split 后,我从 php 收到此警告: PHP Warning: preg_split(): Delimiter must n
我有一个充满字符串的数组,其中可能包含一个或多个下划线、破折号和句点。我想将 分成由下划线、破折号和句点分隔的字符。到目前为止,我已经成功使用下划线和破折号,但没有成功。 这有效: $family02
我有一个包含一些数字和文本的字符串,我试图在第一个非数字字符处拆分该字符串。 例如,我有几个字符串,比如 $value = '150px'; $value = '50em'; $value = '25
我在弄清楚这一点时遇到了一些麻烦。 我有这样的数据行: $data = "Alpha Natural Resources Inc COM 02076X102 2,077 45,700 x 我希望在有多
我正在尝试拆分格式如下的字符串: Value1==Value1||Value2==Value2||..." 在 == 和 || 处但我在使用管道时遇到了问题。我可以很容易地在 == 处拆分它们,但是当
我正在尝试使用 preg_split 拆分字符串。这是字符串的示例:111235622411我希望输出是这样的: $arr[0] = "111"; $arr[1] = "2"; $arr[2] = "
使用以下代码, php explode at capital letters? 您可以将字符串分解为大写。但是如何仅在第一个大写字母上分解它呢?假设您有 helloThereMister。我想要你好T
我正在使用 PHP 制作一个脚本语言解释器。我有该脚本语言的代码: write {Hello, World!} in either the color {blue} or {red} or {#00A
使用以下代码, php explode at capital letters? 您可以按大写分解字符串。但是你如何只在第一个大写字母上分解它呢?假设您有 helloThereMister。我想得到 h
我正在使用 PHP 制作一个脚本语言解释器。我有该脚本语言的代码: write {Hello, World!} in either the color {blue} or {red} or {#00A
请引用下面的代码。 $dArr = 'document.write(volunteerDist);'; $dArr 获取 volunteerDist 的值。 echo $dArr 打印值 4.1,9.
"; } ?> 输出错误 用新行将其分解,但不显示正确的 strlen 。 输出 1 2 2 2 实际输出应该是 1 1 1 1 我哪里错了??? 最佳答案 '/[;:,\r\n]+/' 确保它是\n
大家好,我的代码在下面。我使用 preg_split 将字符串显示为数组,并使用逗号作为分隔符。 ', print_r(preg_split($pattern,$string),1), ''; ?>
我从 Betfair 复制并粘贴足球比赛,例如“Bournemouth v Tottenham”,这存储在 MySQL 数据库中。但是,当我尝试时: preg_split('/\s+/', $row
我需要一些帮助。我想要的是忽略特定字符串中的逗号。这是一个逗号分隔的文件 csv,但名称有一个逗号,我需要忽略它。 我得到的是 结果是 $result (php code): 'hypertext
寻求帮助! 我需要在最后一次出现空格时拆分字符串... 例如“Great Neck NY” 我需要将它分开,这样我就有了“Great Neck”和“NY” 我在使用 preg_split 和基本内容时
我正在尝试让 preg_split() 按空格/制表符拆分以下 2 个字符串(需要对两者都起作用)。 autodiscover.microsoft.com. 3600 IN A 131.107.1
我想在每次找到特殊字符时拆分一个字符串。 我这样做了: preg_split("[\\W]", $str); 但这仍然允许下划线(也许更多?) 是否可以只说允许 a-z A-Z 和数字并拆分任何不是其
我正在尝试用空格而不是单引号之间的 pref_split 字符串。 这是我正在使用的字符串: 'physical memory %'=92%;99;100 'physical memory'=29.6
我有数千个文本文件要解析,它是一个遵循特定模式的产品目录。 它有两个序列号,其中一个我将整个文本拆分成一个数组,每个键一个产品。 问题是我在 preg_split 中使用的序列号从产品中删除了,而我需
我是一名优秀的程序员,十分优秀!