找回密码
 加入
搜索
查看: 3061|回复: 11

[效率算法] 请问如何匹配 . 与 . 之间的内容[已解决]

  [复制链接]
发表于 2016-1-21 11:14:24 | 显示全部楼层 |阅读模式
本帖最后由 heroxianf 于 2016-3-1 14:08 编辑

内容如下:
.
红烧肉
.
红烧肉请到www.baidu.com去搜索。
.
巨型大鱼
.
鲸鱼很大。
.
我再测试的时候想以  “.” 来拆分,结果有网址的地方也会被拆分出来造成不准确。匹配的话也会以 “.” 匹配很多有问题。请指点一下!
发表于 2016-1-21 11:35:29 | 显示全部楼层
(?s)\n(.*?)\n
(?s)\r\n(.*?)\r\n
发表于 2016-1-21 12:52:33 | 显示全部楼层
\.\v+(\V+)

评分

参与人数 1威望 +1 收起 理由
haijie1223 + 1 总是那么简单粗暴

查看全部评分

 楼主| 发表于 2016-1-21 21:39:52 | 显示全部楼层
回复 3# afan


A大如何中间多出一行文字,就不能匹配了。请问这个要如何处理呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-1-21 22:25:37 | 显示全部楼层
回复 3# afan

(?s)(?<=^|\.).*?(?=\s*\n\.|$)

我用之前修改了一下 貌似可以得到这样的结果,麻烦看一下是否合理我太机智了
发表于 2016-1-21 22:28:08 | 显示全部楼层
回复 4# heroxianf


  前面加上(?S)试试
 楼主| 发表于 2016-1-21 23:07:11 | 显示全部楼层
回复 6# haijie1223

测试文本
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
#include <array.au3>

$file = @ScriptDir & "\111.txt"
$sString = FileRead($file)

Local $sText = $sString
Local $aArray = StringRegExp($sText, '(?s)\.\v+(\V+)', 3)
;_ArrayDisplay($aArray)

For $i = 1 To UBound($aArray) - 1
;$sString = StringReplace($sString, $aArray[$i], '*')


MsgBox(0, 0, StringReplace($aArray[$i], " ", ""), 1)
Next
这样不行 ,还是 (?s)(?<=^|\.).*?(?=\s*\n\.|$) 这个正则可行

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-1-21 23:07:57 | 显示全部楼层
要对文本    \h  替换处理后才行
发表于 2016-1-22 00:16:58 | 显示全部楼层
回复  afan

(?s)(?
heroxianf 发表于 2016-1-21 22:25



    你的示例文本并没有其它形态,因此并没有考虑。如果要考虑周全,只怕还有其它的…  因此,示例范本应提供所有形态。
修改的可以。
发表于 2016-1-23 05:30:36 | 显示全部楼层
\S+[^\r\n]+\S+
发表于 2016-1-23 13:26:36 | 显示全部楼层
stringsplit($str,"."&@crlf,1)
发表于 2016-1-24 22:24:55 | 显示全部楼层
回复  heroxianf


  前面加上(?S)试试
haijie1223 发表于 2016-1-21 22:28



    (?s)是啥意思啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 02:39 , Processed in 0.083166 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表