Что нового

Паттерн для разбития текста на слова, цифры, символы

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Для примера возьмём любой *.au3 файл, допустим:

Код:
Local $answer = MsgBox(4, "AutoIt Example", "This script will count to 5 using a 'Do' loop.  Run?")

; Check the user's answer to the prompt (see the help file for MsgBox return values)


необходимо его разбить на слова, цифры, символы, пробелы и переносы строк что бы получилось следующее:

Код:
Local 
{space}
$answer 
{space}
= 
{space}
MsgBox
(
4
, 
{space}
"
AutoIt 
{space}
Example
"
, 
{space}
"
This 
{space}
script 
{space}
will 
{space}
count 
{space}
to 
{space}
5 
{space}
using 
{space}
a 
{space}
'
Do
' 
{space}
loop
.  
{space}
Run
?
"
)
{CRLF}
{CRLF}
;
Check
{space}
the
{space}
user's
{space}
answer
{space}
to
{space}
the
{space}
prompt
{space}
(
see
{space}
the
{space}
help
{space}
file
{space}
for
{space}
MsgBox
{space}
return
{space}
values
)


Добавлено:
Сообщение автоматически объединено:

Сделал что хотел, правда на PureBasic'е, нужно ли отмечать тему решённой, может ещё кому нибудь понадобится что - то похожее.
 

beliy

Продвинутый
Сообщения
372
Репутация
72
Незнаю насколько данная задача решается с помощью регулярных выражений, но чем стандартный StringReplace не вариант?
Вроде ж нормально отрабатывает:
Код:
Dim $aArray[9][2] = [[@CRLF, @CRLF & '{CRLF}' & @CRLF], _
					 [' ', @CRLF & '{space}' & @CRLF], _
					 ['(', @CRLF & '(' & @CRLF], _
					 [')', @CRLF & ')' & @CRLF], _
					 [',', @CRLF & ',' & @CRLF], _
					 ['"', @CRLF & '"' & @CRLF], _
					 ["'", @CRLF & "'" & @CRLF], _
					 [';', @CRLF & ';' & @CRLF], _
					 [@CRLF & @CRLF , @CRLF ]]
					 
$hFile = FileOpen(@ScriptDir & '\script.au3', 0)

If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
    Exit
EndIf

$sChars = FileRead($hFile)

For $i = 0 To UBound($aArray) -1
   $sChars  = StringReplace($sChars , $aArray[$i][0], $aArray[$i][1])
Next

MsgBox(0, "Результат:", $sChars)

FileClose($hFile)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Viktor1703 [?]
необходимо его разбить на слова, цифры, символы, пробелы и переносы строк что бы получилось следующее
Код:
#include <Array.au3>

$vTest = _
	'Local $answer = MsgBox(4, "AutoIt Example", "This script will count to 5 using a ''Do'' loop.  Run?")' & @CRLF & @CRLF & _
	'; Check the user''s answer to the prompt (see the help file for MsgBox return values)'

$aRet = StringRegExp($vTest, '([a-zA-Z]+|\$\w+|[\d\(\)\.,;"''=\h]|\r\n)', 3)
$aDisplay = $aRet

For $i = 0 To UBound($aDisplay)-1
	$aDisplay[$i] = StringReplace(StringReplace($aDisplay[$i], @CRLF, '{CRLF}'), ' ', '{space}')
Next

_ArrayDisplay($aDisplay)
 
Верх