A lot of people do not know of or use these functions, and I am here to help after being helped by BenBob on a good way to use it.
I've recently updated the string section of the E2 Wiki to include the replaceRE() function, this is it explained.
First off, the RE is short for Regular Expression. Those of you who are familiar with programs like excel and access may know what this is already. This type is also used in programing languages like Java.
When it comes to expressions within the functions, they are held with brackets [ ], every different letter/number is held as a separate command unless specified otherwise.
Important keys to remember are, ^ and -
^ can be thought of to be a != function. To say [^1] it would return everything but 1.
Let us use a test sentence to manipulate to test our functions.
Now, let's say we want to remove all of the numbers in the string. You can place the numbers you want to remove by using [1234] or you can do ranges like [1-4].Code:Test = "abcdefg ABCDEFG 1234567 Hello my name is Bob"
Keep in mind this will not remove the spaces inbetweenCode:Test:replaceRE("[0-9]","") returns "abcdefg ABCDEFG Hello my name is Bob" ▲ ALTERNATIVE ▼ Test:replace("1",""):replace("2",""):replace("3",""):replace("4",""):replace("5",""):replace("6",""):replace("7","")
If we wanted to remove all instances of lowercase letters, our code would be.
If we wanted to remove all instances of UPPERCASE letters, our code would be.Code:Test:replaceRE("[a-z]","") returns " ABCDEFG 1234567 H B" ▲ ALTERNATIVE ▼ Test:replace("a",""):replace("b",""):replace("c",""):replace("d",""):replace("e",""):replace("f",""):replace("g","")
Finally if we wanted to remove all instances of letters, our code would be.Code:Test:replaceRE("[A-Z]","") returns "abcdefg 1234567 ello my name is ob" ▲ ALTERNATIVE ▼ Test:replace("A",""):replace("B",""):replace("C",""):replace("D",""):replace("E",""):replace("F",""):replace("G","")
The alphabet is read like ABC...Zabc...z so [A-z] covers the entire area.Code:Test:replaceRE("[a-zA-Z]","") returns " 1234567 " or Test:replaceRE("[A-z]","") returns the same. ▲ ALTERNATIVE ▼ Test:lower():replace("a",""):replace("b",""):replace("c",""):replace("d",""):replace("e",""):replace("f",""):replace("g","")
Let's say we wanted to remove all instances of lowercase vowels, our code would be. *added Y cause spaghetti-o's told me to*
Now that we've gotten that down, lets start considering other options. Lets say we really don't want those annoying spaces in the code, we just simply have to add a " " somewhere within the bracketCode:Test:replaceRE("[aeiouy]","") returns "bcdfg ABCDEFG 1234567 Hll m nm s Bb" ▲ ALTERNATIVE ▼ Test:replace("a",""):replace("e",""):replace("i",""):replace("o",""):replace("u",""):replace("y","")
As I explained earlier there are functions within the expressions that you can use like ^. We've covered - as being used for ranges such as A-E and F-ZCode:Test:replaceRE("[aeiouy ]","") returns "bcdfgABCDEFG1234567HllmnmsBb" ▲ ALTERNATIVE ▼ Test:replace("a",""):replace("e",""):replace("i",""):replace("o",""):replace("u",""):replace("y",""):replace(" ","")
to remove everything but lowercase letters we'd use this
Now to remove everything but UPPERCASE letters we'd use thisCode:Test:replaceRE("[^a-z]","") returns "abcdefgellomynameisob"
------------------------- ENDS replaceRE() tutorial -------------------------Code:Test:replaceRE("[^A-Z]","") returns "ABCDEFGHB"
Now we're on to findRE() and what that's about...
findRE(S,N) - findRE(S) are functions that use a "Regular Expression" to do a lookup in a string. We're going to use the same string that I used previously.
I mainly use this function to determine if a word or a letter is within a sentence.Code:Test = "abcdefg ABCDEFG 1234567 Hello my name is Bob"
For example let's say I want to find the out where in a string the first CAPITAL letter is at
the reason it returns 9 is that the first capital is located at index # 9Code:Test:findRE("[A-Z]") returns 9
A good use for this is to use it with functions like S:left(N), S:right(N), and I guess S:index(N)
I've been using terms like 0-9, a-z, and A-Z in the RE's, but you can use so much more. To use more than one range or conditional you can simply using terms like "[A-CE-G]", which would be finding capitals between A and C, also between E and G.Code:Test:right(Test:length()-Test:findRE("[A-Z]")) returns "BCDEFG 1234567 Hello my name is Bob" Test:left(Test:findRE("[A-Z]")) returns "abcdefg A" Test:right(Test:length()-Test:findRE("[0-9]")) returns "234567 Hello my name is Bob" Test:left(Test:findRE("[0-9]")) returns "abcdefg ABCDEFG 1" Test:index(Test:findRE("[0-9]")) returns "1"
You can also change ranges like 1-5 or 5-9, also a-b and E-T.


LinkBack URL
About LinkBacks





Reply With Quote










Bookmarks