This question already has answers here:
How to parse JSON with VBA without external libraries?
(3 answers)
Closed 5 years ago.
I've been struggling all day to try and convert the following regex that works for php, into a form for javascript.
I am trying to use it for some VBA where I can replace "sedol" with a variable so I can loop through the string to get "name" and other elements
So for example below I would want the outcome to = '0452173'
php regex:
(?<="sedol":")(.+?)(?=",")
String extract:
"sedol":"0452173","name":"Aberdeen Japan Equity (Class I)", .....
The problem is that JS doesn't support look behind.
However, you could do this:
var re = new RegExp("(?:\"" + yourVar + "\":\"(.+?)(?=\",\")");
Then use
var res = re.exec(yourString);
if (res != null) { // match
return res[1]; // the matched part of (.+?)
}
Related
This question already has answers here:
Regex using javascript to return just numbers
(14 answers)
Closed 3 years ago.
Suppose I have this text :
qsdfq fmld - 123 -mqlskdj -6464 - qlsdkjflj - 54654 -qsdfqsdf -2542
And I want to capture all numbers. A solution could be :
\D*(\d*)\D*(\d*)\D*(\d*)\D*(\d*)
But I don't know how many numbers I have. So I want to use the + sign.
I tried the following but it does not work :
[\D*(\d*)]+
You can simply use \d+ and global flag ( g )
let str = `qsdfq fmld - 123 -mqlskdj -6464 - qlsdkjflj - 54654 -qsdfqsdf -2542`
let op = str.match(/\d+/g)
console.log(op)
On side note: I have JS code just to show a working example.
This question already has answers here:
python regular expression replacing part of a matched string
(5 answers)
Closed 4 years ago.
Assume two strings, foo.example.com/1.2.3/sdk-foo-bar.min.js and foo.example.com/1.2.3/sdk-foo-bar-dev.min.js.
By default, the first one is used in the HTML code, but depending on a parameter, I need to replace it with the second (i.e. add the -dev).
I have a regex already (foo\.example\.com/1\.2\.3/(sdk-foo-bar).min\.js) that looks for the string and captures the group sdk-foo-bar, but how can I now replace this group with sdk-foo-bar-dev??
inp = 'foo.example.com/1.2.3/sdk-foo-bar.min.js'
m = re.search('(^.*)(.min.js)', inp)
if m:
print ('%s-%s%s' % (m.group(1), 'dev', m.group(2)))
This question already has answers here:
Python Regex Engine - "look-behind requires fixed-width pattern" Error
(3 answers)
Closed 5 years ago.
I have two regex strings in .net
preRegex = "(?<=(^|[^A-Za-z0-9]+))"
postRegex = "(?=([^A-Za-z0-9]+)|$)"
I want their alternative in python. My problem is let say I have a string
s="I am in aeroplane."
What I need is to replace "aeroplane with aeroPlain" so I want to make regex like
newKey = preRegex + aeroplane + postRegex
pattern = re.compile(newKey,re.IGNORECASE)
new regex string look like
(?<=(^|[^A-Za-z0-9]+))aeroplane(?=([^A-Za-z0-9]+)|$)
but it is giving me error "look-behind requires fixed-width pattern".
I am new to python, Help would be appreciated. Thanks
You can use the following regex:
(^|[^A-Za-z0-9]+)aeroplane([^A-Za-z0-9]+|$)
and when you replace, you can call the back reference to the first and second part of your regex to fetch their value.
Replacement string will be something like '\1aeroPlain\2'.
For more information on backref in python:https://docs.python.org/3/howto/regex.html
Good luck!
This question already has answers here:
Backport Python 3.4's regular expression "fullmatch()" to Python 2
(2 answers)
Closed 5 years ago.
Is there a way to match a complete string before python3.4(as they introduced fullmatch() method here.)
For eg. If i have a string '12.345' and If i want to check for float with no exponential and i use the pattern: r'-?(?:\d+())?(?:\.\d+())?'. But this pattern also works for '12.345abc'.
How can i make re to not match second string '12.345abc'?
Thanks!
You might want to use anchors in combination with filter() and lambda():
import re
strings = ['12.345', '12.345abc']
rx = re.compile(r'^\d+(\.\d+)?$')
numbers = list(filter(lambda x: rx.match(x), strings))
print(numbers)
# ['12.345']
This makes sure no rubbish is matched afterwards.
This question already has an answer here:
Learning Regular Expressions [closed]
(1 answer)
Closed 7 years ago.
Ive got this string
designer-brand-paradise-design-t-9999-123990-tshirt-print-18-preorder-november-delivery
I need to extract any instance of preorder-* from it as I have a bit of a situation with alot of data lingering around.
Im new to regular expressions, so Im hoping this is an easy one. any help greatly appreciated
Looks like the regex you want to grab everything following preorder is:
preorder-(.*)
This will match the string preorder- and then everything past that is put into a group. Eg. in Java this would go:
Pattern preorder_pattern = Pattern.compile("preorder-(.*)");
Matcher m = preorder_pattern.matcher(my_string);
if(m.find()) {
// String my_string matches the pattern!
String stuff_after_preorder = m.group(1);
}