|
Hi,
i have a string in this format YYYYMMDD HH:MM:SS how can i convert this string in a datetime ?
thanks for help.
|
|
|
|
|
I'm not going to spoon feed you, however I can recommend this little article[^].
|
|
|
|
|
When it comes to these type of questions... GOOGLE is your best friend!
|
|
|
|
|
I am new to this whole regex thing. I have read up on it but i still need some help. I have expressions (shown below) and I want to get the values (substring). For example, in example 1 i want to search for my property ([[[MyProperty1]]]) and I want to get back 'Value'. In example 2, i want to be able to search for [[[MyProperty2]]] and have value2 as the result.
Cant you help me write the pattern as well as explain to me what is being done in the pattern to acheive this goal. I have tried '(?<=\[{3}MyProperty1).*?(?=<\]{3})' but it does not work.
Thanks in advance.
Example 1: [[[MyProperty1]]] Value
Example 2: [[[MyProperty1]]] Value [[[MyProperty2]]] value2 [[[MyProperty3]]] value 3
|
|
|
|
|
The main problem may be that [ and ] are special characters in RegEx and need to be escaped \[ and \] .
Oh, I see you did.
I'm unfamiliar with <= and =< , but I just whipped this (?:\[\[\[(?'Name'.*?)\]\]\](?'Value'[^\[]*)) up with my RegexTester[^].
modified on Friday, April 9, 2010 1:20 PM
|
|
|
|
|
I used the escape sequence for the [. If I run '\[{3}MyProperty\]{3}, I get back '[[[MyProperty]]]'. So I think it may be something else. I think it may be the fact that I am trying to use lookahead/lookback.
|
|
|
|
|
Fayu wrote: I am trying to use lookahead/lookback
Why would you?
|
|
|
|
|
I found an example on the web which used that to get the substring. Again, I am new to this. What would you suggest?
|
|
|
|
|
What I added to my first response.
|
|
|
|
|
I didnt realize you updated your comment.
The 'Value' is unknown, can I use * as a wild card?
|
|
|
|
|
What I provided returns everything between the ]]] and the next [ or the end of the line.
|
|
|
|
|
I think (\[\[\[MyProperty3\]\]\][\s{1}])(?<MyProperty3>.*?(?=\s{1}\[|$)) is enough for both of ur requirements, if i understood it clearly
something like ...
Regex regex = new Regex(@"(\[\[\[MyProperty3\]\]\][\s{1}])(?<MyProperty3>.*?(?=\s{1}\[|$))");
Match regexmatch = regex.Match(@"[[[MyProperty1]]] Value [[[MyProperty2]]] value2 [[[MyProperty3]]] value 3");
regexmatch.Groups["MyProperty3"].Value
It'd work for values like value, value2 and value 3 as well.
Mark as answer if it answers ur question
modified on Friday, April 9, 2010 3:18 PM
|
|
|
|
|
I prefer a more generalized technique.
|
|
|
|
|
The property name is looks like this [[[MyProperty2]]] but does not end with <MyProperty2>. So the property/value item shows up as [[[MyProperty2]]] Value2. So if there are multiple properties it will look like this: [[[MyProperty1]]] Value1 [[[MyProperty2]]] Value2 [[[MyProperty3]]] Value3.
Having said that, the pattern provided did not work because I think it is looking for <MyProperty2> end tag. One other thing I want to point out is that there can be only one property which can or cannot have a space after it.
My requirements:
1) Get the value of a property if only one propery is listed ([[[MyProperty1]]] value1)
2) Get the value of a property if there are more than one properies listed ([[[MyProperty1]]] value1 [[[MyProperty2]]] value2 [[[MyProperty3]]] value3
3) In the pattern, I want to pass in the property name and get back the value
4) Use VBScript.RegexExp object (which I dont think will make a difference when it comes to pattern)
Thanks so much for assisting me with this.
|
|
|
|
|
I understand <myproperty2> is not in string of properties. Its a Named capture group literal in regex used to store matched strings under that name provided inside <>
This solution does worked with
MyProperty1, MyProperty2 and MyProperty3.
Try it urself !!!
Note: To get value of property, replace #### from
(\[\[\[####\]\]\][\s{1}])(?<####>.*?(?=\s{1}\[|$)) to that name
Example
To get MyProperty3
use regex (\[\[\[MyProperty3\]\]\][\s{1}])(?<MyProperty3>.*?(?=\s{1}\[|$))
Search for Named capture groups to understand use of <> in regex.
Edit: I have updated it lil bit to take care of end of line as well.
|
|
|
|
|
I wrote a pattern that works as well thanks to you and everyone else that helped me out. THANKS!
Here is my pattern in case you want to see it (and let me know if im missing something):
\[{3}MyProperty1\]{3} ([^ ]+)
|
|
|
|
|
Great !!!
Its always better to use Named capturing groups in complicated regex patterns. But this one is ok
BTW what about values with spaces ?
|
|
|
|
|
DOH!!! Values with spaces dont work.... how do I resolve that>
|
|
|
|
|
Dont worry my solution still works !!!
I guess u don;t need name captured groups, so I have removed it n here is new one
(\[{3}MyProperty4\]{3}[\s{1}])(.*?(?=\s{1}\[|$))
Mark as anwser !!!!
|
|
|
|
|
Works like a charm!!!
Any way I can just have the value returned?
|
|
|
|
|
Now time to callback my initial post.
Like I said use Named capturing groups. Using this you can just return the value of provided propertyname
Regex regex = new Regex(@"(\[{3}MyProperty3\]{3}[\s{1}])(?<MyProperty3>.*?(?=\s{1}\[|$))");
Match regexmatch = regex.Match(@"[[[MyProperty1]]] Value [[[MyProperty2]]] value2 [[[MyProperty3]]] value 3");
string value = regexmatch.Groups["MyProperty3"].Value
Above code will return value of property MyProperty3
|
|
|
|
|
I would LOVE an explanation on the logic behind this...
(\[{3}Property2\]{3}[\s{1}])(.*?(?=\s{1}\[|$))
The only part I understand is (\[{3}Property2\]{3}[\s{1}])
|
|
|
|
|
Yeah!!! u ought to know everything thats going around on earth
Google will take you to right place if you search for positive lookahead in regex
|
|
|
|
|
I prefer the technique I showed.
You then enumerate the Matches and fill a Dictionary with the Names and Values.
Your requirements 1 -- 3 are then satisfied by the Dictionary and you only have to execute the RegEx once per group of properties.
Fayu wrote: Use VBScript
Then why post it in the C# forum?
Or maybe you should give more information on the bigger picture of what you are trying to accomplish.
|
|
|
|
|
Your solution will also give same result, but it will return all properties.
As Fayu asked on his requirement, it wasnt he is looking for.
Cheers !!!
|
|
|
|