<div dir="ltr">It&#39;d be trickier, but you could imagine allowing the user to declare a custom delimiter for their &quot;verbatim literals&quot;, so a Regex type would use a &quot;/&quot;.<div><br></div><div>Ruby, for example, has string literal constructs which allow a wide range of delimiters: <a href="https://simpleror.wordpress.com/2009/03/15/q-q-w-w-x-r-s/">https://simpleror.wordpress.com/2009/03/15/q-q-w-w-x-r-s/</a>  (and Perl as well, I believe)</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div>Jacob<br></div></div></div></div>
<br><div class="gmail_quote">On Tue, Dec 8, 2015 at 3:19 PM, Kametrixom Tikara via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I think we can extend this to something more general: VerbatimLiteralConvertible. A VerbatimLiteral would maybe start with a \&quot; and end with &quot;\ (Might not work with these delimiters). It would enable one to not have to escape special chars like &quot; and \, so that they can be used just like that:<br>
<br>
let verb = \&quot;And he said: &quot;\o/&quot;&quot;\<br>
let file = \&quot;<br>
First line<br>
&quot;Still in verbatim!<br>
&quot;\<br>
<br>
We could then use this for the Reges type like:<br>
<br>
struct Regex : VerbatimLiteralConvertible {<br>
    init(verbatimLiteral value: String) {<br>
        ...<br>
    }<br>
}<br>
<br>
extension String {<br>
    func match(regex: Regex) -&gt; Range&lt;String.Index&gt;? {<br>
        ...<br>
    }<br>
}<br>
<br>
let matches = string.match(\&quot;[a-z]&quot;test&quot;\)<br>
<br>
Such a VerbatimLiteral also has the advantage of being able to copy-paste potentially big regex expressions in your code without the need to manually add all those &quot;\&quot; for escaping. Also it can be used to directly copy-past some text with correct line breaks and indentation.<br>
<br>
I&#39;d really love to see this, I&#39;m just unsure of how the parser could delimit such a VerbatimLiteral.<br>
<br>
Kame<br>
<div class="HOEnZb"><div class="h5"><br>
&gt; On 08 Dec 2015, at 23:41, Brent Royal-Gordon via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt;&gt; 1. The semantics of the =~ operator in other languages maps to a return value of Int? - matching position or nil with no match. This means you would likely need to write if str =~ foo != nil { … }<br>
&gt;<br>
&gt; Actually, I suspect the return value would be more like Range&lt;String.Character.Index&gt;?, or maybe even Regex.Match?.<br>
&gt;<br>
&gt;&gt; 2. The semantics of the =~ operator produce state around matched groups, which is usually exposed to the language as either thread-local or block-local data.<br>
&gt;<br>
&gt; This is hugely dependent on the language and I think it’s pretty obvious that Swift would take a return-value-based approach:<br>
&gt;<br>
&gt;    if let match = string =~ /”([^\\”]*(\\[\\”][^\\”]*)*)”/ {<br>
&gt;        let quotedString = match.substrings[1]<br>
&gt;        …<br>
&gt;    }<br>
&gt;<br>
&gt;&gt; For regex literals, my only concern is that it makes regex a language feature over an extended or standard library feature.<br>
&gt;<br>
&gt; Not necessarily. The only thing that *has* to be in the language is support for parsing regex literals, and the only thing that has to be in the standard library is RegexLiteralConvertible. Even if there is a Regex type in the standard library, just that type could be dropped there without requiring huge compiler changes.<br>
&gt;<br>
&gt; --<br>
&gt; Brent Royal-Gordon<br>
&gt; Architechies<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</div></div></blockquote></div><br></div></div>