Thread overview | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
March 09, 2017 Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
I wrote two regexp: -------------------- auto inlineCodeBlock = regex("`(.*?)`"); // --> `(.*?)` auto bigCodeBlock = regex("/`{3}[\\s\\S]*?`{3}/g"); // --> `{3}[\s\S]*?`{3} -------------------- First for for selection inline code block. Second for multi-line: -------------------- #Header my header text ##SubHeader my sub header text `foo inline code` ``` void foo() { writeln("ppp"); } ``` ###Sub3Header my sub 3 text `bar inline code` #Header2 my header2 text -------------------- It's work fine in online editor https://regex101.com/r/EC5WRu/1 (sic! \\s\\S double escaped in D code). But after compilation of code: auto x = content.matchFirst(bigCodeBlock); writeln(x); print: [] [] It's seems that D regexp work in another way. How can I test them? |
March 10, 2017 Re: Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Suliman | On 10/03/2017 3:50 AM, Suliman wrote: > I wrote two regexp: > > -------------------- > auto inlineCodeBlock = regex("`(.*?)`"); // --> `(.*?)` > auto bigCodeBlock = regex("/`{3}[\\s\\S]*?`{3}/g"); // --> > `{3}[\s\S]*?`{3} > -------------------- > First for for selection inline code block. Second for multi-line: > -------------------- > #Header > my header text > > ##SubHeader > my sub header text `foo inline code` > > ``` > void foo() > { > writeln("ppp"); > } > ``` > > ###Sub3Header > my sub 3 text `bar inline code` > > #Header2 > my header2 text > -------------------- > > It's work fine in online editor https://regex101.com/r/EC5WRu/1 (sic! > \\s\\S double escaped in D code). > > But after compilation of code: > > auto x = content.matchFirst(bigCodeBlock); > writeln(x); > > > print: > [] > [] > > It's seems that D regexp work in another way. How can I test them? I would use dpaste and write a quick script but here is where I think your problem is: regex("/.*/g") It should be: regex(".*", "g") As per[0]. [0] http://dlang.org/phobos/std_regex.html#.regex |
March 09, 2017 Re: Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
Posted in reply to rikki cattermole | > I would use dpaste and write a quick script but here is where I think your problem is:
>
> regex("/.*/g")
>
> It should be:
>
> regex(".*", "g")
>
> As per[0].
>
> [0] http://dlang.org/phobos/std_regex.html#.regex
Sorry, but what regexp are you talking? There is nothing like: `regex("/.*/g")` in my code...
|
March 10, 2017 Re: Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Suliman | On 10/03/2017 4:17 AM, Suliman wrote: >> I would use dpaste and write a quick script but here is where I think >> your problem is: >> >> regex("/.*/g") >> >> It should be: >> >> regex(".*", "g") >> >> As per[0]. >> >> [0] http://dlang.org/phobos/std_regex.html#.regex > > Sorry, but what regexp are you talking? There is nothing like: > `regex("/.*/g")` in my code... > Yes there was: auto bigCodeBlock = regex("/`{3}[\\s\\S]*?`{3}/g"); |
March 09, 2017 Re: Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
Posted in reply to rikki cattermole | On Thursday, 9 March 2017 at 15:22:00 UTC, rikki cattermole wrote:
> On 10/03/2017 4:17 AM, Suliman wrote:
>>> I would use dpaste and write a quick script but here is where I think
>>> your problem is:
>>>
>>> regex("/.*/g")
>>>
>>> It should be:
>>>
>>> regex(".*", "g")
>>>
>>> As per[0].
>>>
>>> [0] http://dlang.org/phobos/std_regex.html#.regex
>>
>> Sorry, but what regexp are you talking? There is nothing like:
>> `regex("/.*/g")` in my code...
>>
>
> Yes there was:
>
> auto bigCodeBlock = regex("/`{3}[\\s\\S]*?`{3}/g");
I still can't get it work in real code :(
|
March 09, 2017 Re: Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Suliman | Adding "r" helped: auto bigCodeBlock = regex(r"`{3}[\s\S]*?`{3}"); But now output is: [["```\r\nvoid foo()\r\n{\r\n\twriteln(\"ppp\");\r\n}\r\n```"]] But I do not \r\n\ symbols... |
March 09, 2017 Re: Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Suliman | On Thursday, 9 March 2017 at 16:14:28 UTC, Suliman wrote:
> But now output is:
> [["```\r\nvoid foo()\r\n{\r\n\twriteln(\"ppp\");\r\n}\r\n```"]]
>
> But I do not \r\n\ symbols...
That's just the writeln array formatter. The matchFirst function returns an array of hits (that allows captures, btw you might need to use \( instead of ( to get the capture, god i hate regex) so writeln tries to print the whole array and that's how it does embedded newlines.
So you have the correct result, just written strangely.
|
March 10, 2017 Re: Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Suliman | On 10/03/2017 5:14 AM, Suliman wrote:
> Adding "r" helped:
>
> auto bigCodeBlock = regex(r"`{3}[\s\S]*?`{3}");
>
> But now output is:
> [["```\r\nvoid foo()\r\n{\r\n\twriteln(\"ppp\");\r\n}\r\n```"]]
>
> But I do not \r\n\ symbols...
\r\n is Windows new line characters.
|
March 09, 2017 Re: Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Thursday, 9 March 2017 at 16:23:23 UTC, Adam D. Ruppe wrote: > On Thursday, 9 March 2017 at 16:14:28 UTC, Suliman wrote: >> But now output is: >> [["```\r\nvoid foo()\r\n{\r\n\twriteln(\"ppp\");\r\n}\r\n```"]] >> >> But I do not \r\n\ symbols... > > That's just the writeln array formatter. The matchFirst function returns an array of hits (that allows captures, btw you might need to use \( instead of ( to get the capture, god i hate regex) so writeln tries to print the whole array and that's how it does embedded newlines. > > So you have the correct result, just written strangely. How should I write to file result without \r\n\ symbols? auto x = content.matchFirst(bigCodeBlock); File f = File("foo.txt", "w"); f.write(x); foo.txt: ["```\r\nvoid foo()\r\n{\r\n\twriteln(\"ppp\");\r\n}\r\n```"] |
March 09, 2017 Re: Where do you test syntax of D regexp online? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Suliman | On Thursday, 9 March 2017 at 16:40:13 UTC, Suliman wrote:
> How should I write to file result without \r\n\ symbols?
>
> auto x = content.matchFirst(bigCodeBlock);
>
> File f = File("foo.txt", "w");
> f.write(x);
Just
f.write(x[0]);
to write out the whole hit instead of the collection of references.
|
Copyright © 1999-2021 by the D Language Foundation