heroxianf 发表于 2016-1-21 11:14:24

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

本帖最后由 heroxianf 于 2016-3-1 14:08 编辑

内容如下:.
红烧肉
.
红烧肉请到www.baidu.com去搜索。
.
巨型大鱼
.
鲸鱼很大。
.
我再测试的时候想以“.” 来拆分,结果有网址的地方也会被拆分出来造成不准确。匹配的话也会以 “.” 匹配很多有问题。请指点一下!

haijie1223 发表于 2016-1-21 11:35:29

(?s)\n(.*?)\n(?s)\r\n(.*?)\r\n

afan 发表于 2016-1-21 12:52:33

\.\v+(\V+)

heroxianf 发表于 2016-1-21 21:39:52

回复 3# afan


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

heroxianf 发表于 2016-1-21 22:25:37

回复 3# afan

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

我用之前修改了一下 貌似可以得到这样的结果,麻烦看一下是否合理{:face (72):}我太机智了

haijie1223 发表于 2016-1-21 22:28:08

回复 4# heroxianf


前面加上(?S)试试

heroxianf 发表于 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\.|$) 这个正则可行

heroxianf 发表于 2016-1-21 23:07:57

要对文本    \h替换处理后才行

afan 发表于 2016-1-22 00:16:58

回复afan

(?s)(?
heroxianf 发表于 2016-1-21 22:25 http://www.autoitx.com/images/common/back.gif


    你的示例文本并没有其它形态,因此并没有考虑。如果要考虑周全,只怕还有其它的…因此,示例范本应提供所有形态。
修改的可以。

haijie1223 发表于 2016-1-23 05:30:36

\S+[^\r\n]+\S+

kevinch 发表于 2016-1-23 13:26:36

stringsplit($str,"."&@crlf,1){:face (197):}

gyhhi 发表于 2016-1-24 22:24:55

回复heroxianf


前面加上(?S)试试
haijie1223 发表于 2016-1-21 22:28 http://www.autoitx.com/images/common/back.gif


    (?s)是啥意思啊
页: [1]
查看完整版本: 请问如何匹配 . 与 . 之间的内容[已解决]