d0n Posted November 2, 2009 Share Posted November 2, 2009 say i have a list like [14] John Steve IV Steven John IX John Victor VI I am trying to trim everything down to the roman letters using stringregexp The pattern here doesn't seem to work well with (John Victor VI) since they both start with V and returns a wrong group "\[?.*?\]?\w*\s\w*?\s?(I.*|X.*|V.*)" Link to comment Share on other sites More sharing options...
Authenticity Posted November 2, 2009 Share Posted November 2, 2009 IF the strings always end with the roman numbers then you can do something like: Local $aStrings[3] = ["[14] John Steve IV", "Steven John IX", "John Victor VI"] For $i = 0 To UBound($aStrings)-1 ConsoleWrite(StringTrimLeft($aStrings[$i], StringInStr($aStrings[$i], " ", 0, -1)) & @CRLF) Next ..or if you're insisting to use StringRegExpReplace then you can do: Local $aStrings[3] = ["[14] John Steve IV", "Steven John IX", "John Victor VI"] For $i = 0 To UBound($aStrings)-1 ConsoleWrite(StringRegExpReplace($aStrings[$i], ".*\s(.*)", "\1") & @CRLF) Next Link to comment Share on other sites More sharing options...
Mat Posted November 2, 2009 Share Posted November 2, 2009 (edited) Or if you are looking for any Roman numeral:StringRegExp ($sString, "(?:[^A-z]|\A)([I;V;X;C;D;M]+)(?:[^A-z]|\Z)", 3) would work. It will only pick up what you want it to I think... And it's case sensitive. Mat Edit: But returns an array. I will modify now... Edit2: Probably a bit more complicated than it needs to be but:$sText = "[14] John Steve IV" & @CRLF & "Steven John IX" & @CRLF & "John Victor VI" $sNew = StringRegExpReplace ($sText, "(?s)(.*?)(\W|\A)([IVXCDM]+)(\W|\Z)(.*?)", "\3" & @CRLF) MsgBox (0, "Result", $sNew) Edited November 2, 2009 by Mat AutoIt Project Listing Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted November 2, 2009 Moderators Share Posted November 2, 2009 Does this work?Global $s_str = _ "John Steve IV" & @CRLF & _ "Steven John IX" & @CRLF & _ "John Victor VI" Global $s_pattern = "(.*?\W)([IVXLCDM]+)((?:\z|\W.*?))" Global $s_out = StringRegExpReplace($s_str, $s_pattern, "$2") ConsoleWrite($s_out & @CRLF) Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now