首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于捕获文本区域中的“标题”触发词的RegExp

用于捕获文本区域中的“标题”触发词的RegExp
EN

Stack Overflow用户
提问于 2014-10-08 16:40:36
回答 2查看 77关注 0票数 0

我正试图为php preg_split编写regexp,以捕获特定的“标题”,比如textarea im处理中的单词。

我希望使用结果数组来改进用户的格式设置,并在评论文章中创建一个流线型外观。

代码语言:javascript
复制
$returnValue = preg_split('/[^|\n]*[\t| ]*\b(Pro|Contra|Conclusion)\b\:[\t| ]*/i', 
                           $data['review_text'],
                           -1,
                           PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);

这是我的示例文本输入

代码语言:javascript
复制
Intro line one, first part of the array
Pro:Pro:double Pro 1, no space between
Pro: Pro:double Pro 2, space between
Pro: test Pro:double Pro 3, characters between
Pro:
Pro:double Pro 4, linebreak betweem, should create an empty pro entry
Contra:
Conclusion: the last Contra was empty
Conclusion: this Contra: in this row should not match!
Conclusion: Test with spaces between Conclusion and :
 Conclusion: this Conclusion was prefixed by a space
    Conclusion: this Conclusion was prefixed by a Tab
        Conclusion: this Conclusion was prefixed by two Tabs a space between
Conclusion : this Conclusion has a space between Conclusion and :



a final line with multiple line breaks in between, should be part of the last conclusion fragment

结果应该包括Intro行、4个Pro结果(带分隔符)、1个Contra (空)和7个结论结果(带分隔符)。唯一的Contra应该是空的,最后一行应该是最后结论的一部分

我在试着匹配这样的东西

  1. 行开始,文件开始
  2. 任何空白字符的零或n次出现
  3. 任何版本的Pro,Contra或结论(忽略上下大小写)
  4. 任何空白字符的零或n次出现

按这个顺序

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-09 09:21:59

在@M42的帮助下,我找到了正确的方法.

代码语言:javascript
复制
'/\n[\t ]*\b(Pro|Contra|Conclusion)[\t ]*:[\t ]*/i'

只有“文件的开始,而不是新的行”缺失,这几乎完全符合我的要求(仍然测试,尽管让shure)。现在,我在字符串之前添加一个"\r\n“,稍后当我修剪()字符串片段时,字符串将被剥离掉。

完整的PHP调用如下所示

代码语言:javascript
复制
$returnValue = preg_split('/\n[\t ]*\b(Pro|Contra|Conclusion)[\t ]*:[\t ]*/i', $data['review_text'], -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);

如果你想知道,为什么我在回复M42时使用Fazit而不是结论,我正在为一个德语web应用程序编写代码,所以我必须将所有的拷贝和粘贴翻译到StackOverflow。(ಠ_ಠ)

票数 0
EN

Stack Overflow用户

发布于 2014-10-08 16:49:01

首先,[^|\n]*意味着不属于管道|或换行的0或多个字符。

[\t| ]*指的是0或多个字符,这些字符不是制表、管道、|或空格。

我猜你想:

代码语言:javascript
复制
/\s*\b(Pro|Contra|Conclusion):[\t ]*/i
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26262046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档