Jump to content

Recommended Posts

  • Moderators
Posted

golfinhu,

how do I put a function inside the stringregexpreplace?

You do not - you let the SRER do its work and then run StringLower on the result like this: :x

$read = StringLower(StringRegExpReplace($read, 'v_assunto\s?=\s?([\w+\.+]+)z', '$1'))

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Posted (edited)

golfinhu,

You do not - you let the SRER do its work and then run StringLower on the result like this: :x

$read = StringLower(StringRegExpReplace($read, 'v_assunto\s?=\s?([\w+\.+]+)z', '$1'))

M23

worked perfectly

thankyou so much!

edit:

he left the all strings lowercase!

example:

$string = '<a href="máquina-de-macarrão" title="Máquina de Macarrão"><img src="arquivos/destaque01.jpg" alt="Máquina de Macarrão" /></a>'
$string = StringUpper(StringRegExpReplace($string, '<a href="(.+?)"', '<a href="$1"'))
MsgBox(0,'',$string)

=/

I'll try another way

but thanks a lot!

Edited by golfinhu
Posted

Do you mean something like this:

$string = '<a href="máquina-de-macarrão" title="Máquina de Macarrão"><img src="arquivos/destaque01.jpg" alt="Máquina de Macarrão" /></a>'
$string = execute(StringRegExpReplace($string, '(<a href=")(.+?)(".*)', "'$1' & StringUpper('$2') & '$3'"))
_consolewrite($string & @LF)

Func _ConsoleWrite($sString)
    Local $aResult = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", 65001, "dword", 0, "wstr", $sString, "int", -1, _
                                "ptr", 0, "int", 0, "ptr", 0, "ptr", 0)
    If @error Then Return SetError(1, @error, 0)
    Local $tText = DllStructCreate("char[" & $aResult[0] & "]")
    $aResult = DllCall("Kernel32.dll", "int", "WideCharToMultiByte", "uint", 65001, "dword", 0, "wstr", $sString, "int", -1, _
                            "ptr", DllStructGetPtr($tText), "int", $aResult[0], "ptr", 0, "ptr", 0)
    If @error Then Return SetError(2, @error, 0)
    ConsoleWrite(DllStructGetData($tText, 1))
EndFunc

Beware embedded quotes in the text as they will break things down. Use StringReplace($sString, "'", "''", 0, 1) to escape them:

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Posted (edited)

I wrote a function to do exactly that a while ago based on what php has Other people then replied with some alternatives to get a similar effect with regex and execute.

Usage in this case:

$read = "v_assunto = TesTiNg.tHisiS.a.tESt.z"
$read = StringRegExpReplaceCallback($read, 'v_assunto\s?=\s?([\w+\.+]+)z', "MyStringLower")

ConsoleWrite($read & @LF)

Func MyStringLower($asMatches)
    Return StringLower($asMatches[1])
EndFunc  ;==>MyStringLower

Func StringRegExpReplaceCallback($sString, $sPattern, $sFunc, $iLimit = 0)
    Local $iOffset = 1, $iDone = 0, $iMatchOffset

    While True
        $aRes = StringRegExp($sString, $sPattern, 2, $iOffset)
        If @error Then ExitLoop

        $sRet = Call($sFunc, $aRes)
        If @error Then Return SetError(@error, $iDone, $sString)

        $iOffset = StringInStr($sString, $aRes[0], 1, 1, $iOffset)
        $sString = StringLeft($sString, $iOffset - 1) & $sRet & StringMid($sString, $iOffset + StringLen($aRes[0]))
        $iOffset += StringLen($sRet)

        $iDone += 1
        If $iDone = $iLimit Then ExitLoop
    WEnd

    Return SetExtended($iDone, $sString)
EndFunc   ;==>StringRegExpReplaceCallback

Edit: Added example value for $read

Edited by Mat

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...