Re: Where do you test syntax of D regexp online?

2017-03-10 Thread Suliman via Digitalmars-d-learn

On Friday, 10 March 2017 at 14:36:48 UTC, Suliman wrote:

On Thursday, 9 March 2017 at 16:47:18 UTC, Adam D. Ruppe wrote:

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.


What can be wrong with this regexp? 
https://regex101.com/r/8e7nPL/3

it's crush D compiler, and I can't find out why


I need simply select parts from one first-level # to another.

like:
#header
some text
and some code

^ first matching


#header2
some text2
and some code2

^ second matching





Re: Where do you test syntax of D regexp online?

2017-03-10 Thread Suliman via Digitalmars-d-learn

On Thursday, 9 March 2017 at 16:47:18 UTC, Adam D. Ruppe wrote:

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.


What can be wrong with this regexp? 
https://regex101.com/r/8e7nPL/3

it's crush D compiler, and I can't find out why


Re: Where do you test syntax of D regexp online?

2017-03-09 Thread Adam D. Ruppe via Digitalmars-d-learn

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.




Re: Where do you test syntax of D regexp online?

2017-03-09 Thread Suliman via Digitalmars-d-learn

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```"]


Re: Where do you test syntax of D regexp online?

2017-03-09 Thread rikki cattermole via Digitalmars-d-learn

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.


Re: Where do you test syntax of D regexp online?

2017-03-09 Thread Adam D. Ruppe via Digitalmars-d-learn

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.


Re: Where do you test syntax of D regexp online?

2017-03-09 Thread Suliman via Digitalmars-d-learn

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...


Re: Where do you test syntax of D regexp online?

2017-03-09 Thread Suliman via Digitalmars-d-learn

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 :(


Re: Where do you test syntax of D regexp online?

2017-03-09 Thread rikki cattermole via Digitalmars-d-learn

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");


Re: Where do you test syntax of D regexp online?

2017-03-09 Thread Suliman via Digitalmars-d-learn
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...




Re: Where do you test syntax of D regexp online?

2017-03-09 Thread rikki cattermole via Digitalmars-d-learn

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


Where do you test syntax of D regexp online?

2017-03-09 Thread Suliman via Digitalmars-d-learn

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?