|
Couple of questions. What regex flavor are you using POSIX, PCRE, .NET, Java, etc?
Is this part of a compiled/interpreted program (e.g C++, C#, python), or is it part of something more like a shell script?
Keep Calm and Carry On
|
|
|
|
|
I'm trying to use it within Pabbly Connect, which is an integration system like Zapier or Make. I can use the following spreadsheet type formulas found here https://www.pabbly.com/spreadsheet-formulas/ and similar usually to Google sheet formulas.
|
|
|
|
|
Andrew St. Hilaire wrote:
it doesn't work well when there's a street direction afterwards like "123 Easy Street N"
Your pattern explicitly requires at least two letters at the end of the line, with a non-word character before them. "123 Easy Street N" only has one letter at the end of the line, and is therefore not a match for your pattern.
NB: Your pattern could be simplified to:
(\b[A-Za-z]{2,})$
You need to consider the data you are trying to match, and come up with a pattern to match it. Given your example, you could try:
(\b[A-Za-z]{2,}\b)(\s+[A-Za-z])?$ which would match "Street" in both "123 Easy Street" and "123 Easy Street N".
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Andrew St. Hilaire wrote: I'm trying to skip over the single character direction indicator and match "Street" whether the single character is there or not,
So match the following so it returns 'Main' in the match for any of the following
1. 123 Main
2. 123 Main View
3. 123 Main N
4. 123 Main View S
(\b[A-Za-z]+)((\s+[A-Za-z])?)$
First clause matches the street.
Second clause optionally matches a single last character.
Why the extra parens in the second clause? Because I prefer to always have a match for optionals. So in this case first match is street name and second match (always there) is either something like 'S' or it is empty/null. If the parens were not there then there might or might not be a second match (you would need to test for it.)
|
|
|
|
|
Hello everyone!
since more than two decades programming with VC++ I never used Regular Expressions.
But now I need... The solution in VS2022 contains some thousands line looking like:
some_object.MyMethod(comma_separated_parameter_list, &SomeClass(argument)optiolal_parameter-list)
What I need is removing the ampersand (&) from these code expressions.
I found a way to search for such an expression. It is something like something like
.*MyMethod\(.*, &SomeClass\(
But I could not find a working expression for Replace.
So I need your help guys!
|
|
|
|
|
Typically, one would use capture grops and replacement expressions. In your case you might do
(.*MyMethod(.*, )&(SomeClass()/s\1\2
If there are many SomeClasses that you would like to replace, you might be able to use
(.*MyMethod(.*, )&(\w*()/s\1\2 Be cautious! I Have not tested either of these, and any time you're experimenting with regular expression replacements, Bad Things can happen. Back up Early! Back up Often!
This all assumes that you actually want to make replacements using Visual Studio, more information for which can be found here:
Keep Calm and Carry On
|
|
|
|
|
Thank you for pointing me out to capture groUps! Very interesting.
However your suggestion with Quote: (.MyMethod(., )&(SomeClass()/s\1\2 doesn't work.
Example:
Quote: original line:
qwerty.MyMethod(param1, param2, &SomeClass(param3), param4);
search for the parttern
.*MyMethod\(.*, &SomeClass\( finds the substring of the origin up to
SomeClass(
But trying to replace it (to remove the &) using your suggestion results to
(.MyMethod(., )&(SomeClass()/s\1\2param3), param4);
|
|
|
|
|
Visual Studio's "Replace in Files" option (Ctl-Shift-H) allows you to use regular expressions, for both the find and the replace parts, and even offers a drop down of selections for the more common situations.
|
|
|
|
|
Thank you Richard.
I know about these options in Visual Studio.
What I don't know is how to remove an & from a code line that I already found (using regular expressions) but leave all the other texts before and after this & unchanged!
|
|
|
|
|
I just tried a quick test and this works:
Expression in the Find box: &([a-z][A-Za-z]*)
Expression in the Replace box: $1
The find expression looks for the ampersand followed by a lowercase letter, followed by zero or more alphabetics, and captures everything apart from the ampersand, which is outside the parentheses.
The replace expression says to replace everything that was found (including the ampersand), with the text in the capture group, which is the portion in parentheses.
You will most likely need to modify the find portion to match your exact requirements.
|
|
|
|
|
Thank you Richard!
|
|
|
|
|
Thank you both Richard and k5054!
The hint to look at "capture groups" was very useful!
I've just tested: so find
(.*MyMethod\(.*, )&(SomeClass\(.*)
and replace with
$1$2 gives me what I need: the ampersand has been removed!
|
|
|
|
|
Hello,
I need to write a regular expression search which will locate when a line ends with the same text as the preceding line, but does not have the same first 10 characters. So in this example:
[11:12:21] Hello this is Tom. How are you?
[11:14:08] Hello this is Tom. How are you?
. . . I would need to search for consecutive lines for which the text was the same after the time entered in brackets.
I know that this search:
FIND: ^.{11}(.*)$
REPLACE; $1
. . . will locate the first 11 characters and remove them.
This search:
FIND: ^((.{10}).*)(?:\r?\n\2.*)+
REPLACE: $1
. . . will locate lines where the first 10 characters are the same and remove them.
But I can't figure out how to structure the search so it checks the text from position 11 to the end of the line, and then checks if the text on the next line from the 11th character to the end of the line is the same.
|
|
|
|
|
You cannot do what you are asking with a regular expression.
(There is in fact a very wrong way to attempt this which is ridiculous and would lead to nothing but a maintenance nightmare.)
However in a programming language that uses regexes the algorithm that you would create would look like the following
1. Read a line
2. Parse the line to remove the timestamp.
3. Does it match the previous one? (Do whatever you want)
4. Otherwise save it for the next time
5. Go back to step 1 until there are no more lines to read.
|
|
|
|
|
-Hardsoul -housejazz
+Jean Michel Rotin
-Anita Perras
-St.Niccolo
+Mahalia -fr
to
Hardsoul -housejazz
Jean Michel Rotin
Anita Perras
St.Niccolo
Mahalia -fr
|
|
|
|
|
The regex to match a single character at the start of the line using regex for the major languages.
^[-+]
To match more than one.
^[-+]+
Replacing it is a different problem and it specifically depends on the programming language you are using and which you did not specify.
|
|
|
|
|
My campaigns all follow the same naming convention, i am trying to use a Regex_Extract formula in DataStudio to create a new custom dimension that only displays the 4th last element in the below campaign: "ctatext"
Each element is separated by a _
channel_product_country_medium_brand_offer_campaignname_ctatext_date_objective_0
Closest i have gotten is:
REGEXP_EXTRACT(Session campaign, '(.+){4}(?:[^_]+.)')
but that only returns the 4th character in the string .. can anyone help ?
|
|
|
|
|
How about something like:
_([^_]+)(_[^_]*){3}$ regex101: build, test, and debug regex[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Oh yes that has helped, thank you very much!
|
|
|
|
|
Hi,
I want to split the text above in three results.
Every result starts with the word "Leistung" and can optionally have a second line starting with "Zusatz".
My regex-expression ist currently this:
/Leistung [ ]*[\w\d äöüÄÖÜ]*\n[\w\d äöüÄÖÜ\*]*/gm
But this does not fit exactly.
This ist the text:
Leistung Armeotraining ET Anzahl 1
Zusatz *TextZusatz_Anf1*
Leistung Atemtherapie 30 Anzahl 2
Leistung Aktivierungsgruppe Anzahl 3
Zusatz *TextZusatz_Anf3*
The result should be:
Leistung Armeotraining ET Anzahl 1
Zusatz *TextZusatz_Anf1*
Leistung Atemtherapie 30 Anzahl 2
Leistung Aktivierungsgruppe Anzahl 3
Zusatz *TextZusatz_Anf3*
Can anyone help me with the regex-expression?
Thank you in advance!
Tobias
|
|
|
|
|
It will depend on the "flavour" of regex you're using, but something like this seems to work for me:
^Leistung.*$(\n^Zusatz.*$)? Demo[^]
Make sure your regex has the "global" and "multi-line" options set, so that $ matches the end of a line rather than the end of the input string.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Thank you, that worked for me!
|
|
|
|
|
I am trying to create a question on google forms with the following conditions but having a hard time figuring out how to create a regular expression for this
What is your member ID?
- Must be an 8 digit number
- cannot be repeating numbers like 00000000 or 11111111 etc
- cannot be 12345678
Is there a way to come up with a regular expression to achieve this?
|
|
|
|
|
I think you want to do some "string exclusions" (e.g. "12345678", "00000000", ... "99999999"); ending with an inclusion (0-9).
https://stackoverflow.com/questions/2078915/a-regular-expression-to-exclude-a-word-string
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
I have a similar string with a C++ function __X
__X(" (whatever1)") alpha __X("whatever2") beta
and I should remove the __X function and the corresponding parentheses, so the result should be
"(whatever1)" alpha "whatever2" beta
The argument to the __X function is a string embedded in "" and sometimes additionally embedded in ()
I'd appreciate any help, thanks in advance
|
|
|
|