* Possible to write 'beginning of line' in a String? @ 2013-04-02 7:26 Thorsten Jolitz 2013-04-02 8:11 ` Teemu Likonen 2013-04-02 8:16 ` Andreas Röhler 0 siblings, 2 replies; 10+ messages in thread From: Thorsten Jolitz @ 2013-04-02 7:26 UTC (permalink / raw) To: help-gnu-emacs Hi List, what is the (or rather - is there a) string equivalent to regexp "^abc"? "\nabc" is not quite what I want. -- cheers, Thorsten ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Possible to write 'beginning of line' in a String? 2013-04-02 7:26 Possible to write 'beginning of line' in a String? Thorsten Jolitz @ 2013-04-02 8:11 ` Teemu Likonen 2013-04-02 9:22 ` Thorsten Jolitz 2013-04-02 8:16 ` Andreas Röhler 1 sibling, 1 reply; 10+ messages in thread From: Teemu Likonen @ 2013-04-02 8:11 UTC (permalink / raw) To: Thorsten Jolitz; +Cc: help-gnu-emacs [-- Attachment #1: Type: text/plain, Size: 261 bytes --] Thorsten Jolitz [2013-04-02 09:26:54 +0200] wrote: > what is the (or rather - is there a) string equivalent to regexp > "^abc"? "\nabc" is not quite what I want. I think "^" should work but there is also "\`". Actually, in Lisp strings you would write "\\`". [-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Possible to write 'beginning of line' in a String? 2013-04-02 8:11 ` Teemu Likonen @ 2013-04-02 9:22 ` Thorsten Jolitz 0 siblings, 0 replies; 10+ messages in thread From: Thorsten Jolitz @ 2013-04-02 9:22 UTC (permalink / raw) To: help-gnu-emacs Teemu Likonen <tlikonen@iki.fi> writes: > Thorsten Jolitz [2013-04-02 09:26:54 +0200] wrote: > >> what is the (or rather - is there a) string equivalent to regexp >> "^abc"? "\nabc" is not quite what I want. > > I think "^" should work but there is also "\`". Actually, in Lisp > strings you would write "\\`". But this is still regexp syntax, when used as a string "^" and "\`" are just printed like other chars. -- cheers, Thorsten ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Possible to write 'beginning of line' in a String? 2013-04-02 7:26 Possible to write 'beginning of line' in a String? Thorsten Jolitz 2013-04-02 8:11 ` Teemu Likonen @ 2013-04-02 8:16 ` Andreas Röhler 2013-04-02 9:20 ` Thorsten Jolitz 1 sibling, 1 reply; 10+ messages in thread From: Andreas Röhler @ 2013-04-02 8:16 UTC (permalink / raw) To: help-gnu-emacs Am 02.04.2013 09:26, schrieb Thorsten Jolitz: > > Hi List, > > what is the (or rather - is there a) string equivalent to regexp "^abc"? > "\nabc" is not quite what I want. > You may express "Beginning of line followed by string 'abc'" in different ways. Depends from usage, your needs. rx macro delivers that wording of regexps Maybe tell what's inconvenient with "^abc" ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Possible to write 'beginning of line' in a String? 2013-04-02 8:16 ` Andreas Röhler @ 2013-04-02 9:20 ` Thorsten Jolitz 2013-04-02 9:24 ` Óscar Fuentes 0 siblings, 1 reply; 10+ messages in thread From: Thorsten Jolitz @ 2013-04-02 9:20 UTC (permalink / raw) To: help-gnu-emacs Andreas Röhler <andreas.roehler@easy-emacs.de> writes: > Am 02.04.2013 09:26, schrieb Thorsten Jolitz: >> >> Hi List, >> >> what is the (or rather - is there a) string equivalent to regexp "^abc"? >> "\nabc" is not quite what I want. >> > > You may express "Beginning of line followed by string 'abc'" in > different ways. Depends from usage, your needs. > > rx macro delivers that wording of regexps > > Maybe tell what's inconvenient with "^abc" I would need something that can be inserted as string, but is matched only at beginning of line. ,----------------- | (insert "^abc ") | ^abc `----------------- is not what I want, and "abc ", when used as regexp, is obviously matched anywhere. -- cheers, Thorsten ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Possible to write 'beginning of line' in a String? 2013-04-02 9:20 ` Thorsten Jolitz @ 2013-04-02 9:24 ` Óscar Fuentes 2013-04-02 9:41 ` Andreas Röhler 0 siblings, 1 reply; 10+ messages in thread From: Óscar Fuentes @ 2013-04-02 9:24 UTC (permalink / raw) To: Thorsten Jolitz; +Cc: help-gnu-emacs Thorsten Jolitz <tjolitz@gmail.com> writes: > I would need something that can be inserted as string, but is matched > only at beginning of line. > > ,----------------- > | (insert "^abc ") > | ^abc > `----------------- > > is not what I want, and "abc ", when used as regexp, is obviously > matched anywhere. what about (beginning-of-line) (insert "abc") ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Possible to write 'beginning of line' in a String? 2013-04-02 9:24 ` Óscar Fuentes @ 2013-04-02 9:41 ` Andreas Röhler 2013-04-02 9:58 ` Thorsten Jolitz [not found] ` <mailman.23288.1364897437.855.help-gnu-emacs@gnu.org> 0 siblings, 2 replies; 10+ messages in thread From: Andreas Röhler @ 2013-04-02 9:41 UTC (permalink / raw) To: help-gnu-emacs Am 02.04.2013 11:24, schrieb Óscar Fuentes: > (beginning-of-line) > (insert "abc") resp. (progn (beginning-of-line) (looking-at "abc") ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Possible to write 'beginning of line' in a String? 2013-04-02 9:41 ` Andreas Röhler @ 2013-04-02 9:58 ` Thorsten Jolitz [not found] ` <mailman.23288.1364897437.855.help-gnu-emacs@gnu.org> 1 sibling, 0 replies; 10+ messages in thread From: Thorsten Jolitz @ 2013-04-02 9:58 UTC (permalink / raw) To: help-gnu-emacs Andreas Röhler <andreas.roehler@easy-emacs.de> writes: > Am 02.04.2013 11:24, schrieb Óscar Fuentes: >> (beginning-of-line) >> (insert "abc") > > resp. > > (progn (beginning-of-line) > (looking-at "abc") Thats not what I mean. I set a variable with string values that are inserted by other libraries (not under my control), but I want to use these string values for regexp searches in my own program too. But thanks to everyone, I was probably looking for an (obscure magic) non-printable control-character that functions in a string like "^" does in a regexp, but the way to handle this is probably 'take the string and add "^" in front of it before using it as regexp'. -- cheers, Thorsten ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <mailman.23288.1364897437.855.help-gnu-emacs@gnu.org>]
* Re: Possible to write 'beginning of line' in a String? [not found] ` <mailman.23288.1364897437.855.help-gnu-emacs@gnu.org> @ 2013-04-02 21:27 ` Pascal J. Bourguignon 2013-04-03 7:06 ` Thorsten Jolitz 0 siblings, 1 reply; 10+ messages in thread From: Pascal J. Bourguignon @ 2013-04-02 21:27 UTC (permalink / raw) To: help-gnu-emacs Thorsten Jolitz <tjolitz@gmail.com> writes: > Andreas Röhler <andreas.roehler@easy-emacs.de> writes: > >> Am 02.04.2013 11:24, schrieb Óscar Fuentes: >>> (beginning-of-line) >>> (insert "abc") >> >> resp. >> >> (progn (beginning-of-line) >> (looking-at "abc") > > > Thats not what I mean. I set a variable with string values that are > inserted by other libraries (not under my control), but I want to use > these string values for regexp searches in my own program too. No. Regular expressions are different from the string they match in general. Literal regular expressions are of course identical to the string they match. (string-match "abc" "abc") --> 0 ; is true Some special cases may also be identical. For example, "[][*]*" matches itself. (string-match "[][*]*" "[][*]*") --> 0 But not in general, and not in the case of matching the beginning of the line, since this matches 0 characters, but a position, while obviously the regular expression for it is 1 or more characters. One easy solution is to duplicate your variables: (defvar *thingy-string* "hello") (defvar *thingy-regexp* "\\`hello") Another solution would be to write a function that would generate from a regular expression a minimal string that would match. But in general, that would be you'd have to re-implement the full regexp parser, since AFAIK, emacs doesn't have a public API to map regexp strings to regexp sexps that can easily be processed. Notice the difference between ^ which means beginning of string, and \\` which means beginning of line: (string-match "^hello" "hello") --> 0 (string-match "\\`hello" "hello") --> 0 (string-match "^world" "hello\nworld") --> 6 (string-match "\\`world" "hello\nworld") --> nil > But thanks to everyone, I was probably looking for an (obscure magic) > non-printable control-character that functions in a string like "^" does > in a regexp, but the way to handle this is probably 'take the string and > add "^" in front of it before using it as regexp'. There's no such thing as a control-character. There are characters. And there are encodings, which map characters to codes. Then in a given encoding, there may be codes that don't correspond to any characters that may be used to "control" or some other purpose, that one could call control codes. Don't let emacs confuse you by the fact that it uses integers to represent characters. It still decode and encode them to sequences of code when doing I/O. -- __Pascal Bourguignon__ http://www.informatimago.com/ A bad day in () is better than a good day in {}. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Possible to write 'beginning of line' in a String? 2013-04-02 21:27 ` Pascal J. Bourguignon @ 2013-04-03 7:06 ` Thorsten Jolitz 0 siblings, 0 replies; 10+ messages in thread From: Thorsten Jolitz @ 2013-04-03 7:06 UTC (permalink / raw) To: help-gnu-emacs "Pascal J. Bourguignon" <pjb@informatimago.com> writes: >> Thats not what I mean. I set a variable with string values that are >> inserted by other libraries (not under my control), but I want to use >> these string values for regexp searches in my own program too. > > No. > > Regular expressions are different from the string they match in > general. > > Literal regular expressions are of course identical to the string they > match. (string-match "abc" "abc") --> 0 ; is true > > Some special cases may also be identical. For example, "[][*]*" matches > itself. (string-match "[][*]*" "[][*]*") --> 0 > > But not in general, and not in the case of matching the beginning of the > line, since this matches 0 characters, but a position, while obviously > the regular expression for it is 1 or more characters. > > One easy solution is to duplicate your variables: > > (defvar *thingy-string* "hello") > (defvar *thingy-regexp* "\\`hello") > > > Another solution would be to write a function that would generate from a > regular expression a minimal string that would match. But in general, > that would be you'd have to re-implement the full regexp parser, since > AFAIK, emacs doesn't have a public API to map regexp strings to regexp > sexps that can easily be processed. > > > Notice the difference between ^ which means beginning of string, and \\` > which means beginning of line: > > (string-match "^hello" "hello") --> 0 > (string-match "\\`hello" "hello") --> 0 > > (string-match "^world" "hello\nworld") --> 6 > (string-match "\\`world" "hello\nworld") --> nil Actually I kind of overlooked "\\`" until now and always used "^", but in this special case my question refers to it would not make a difference. >> But thanks to everyone, I was probably looking for an (obscure magic) >> non-printable control-character that functions in a string like "^" does >> in a regexp, but the way to handle this is probably 'take the string and >> add "^" in front of it before using it as regexp'. > > There's no such thing as a control-character. There are characters. > And there are encodings, which map characters to codes. Then in a given > encoding, there may be codes that don't correspond to any characters > that may be used to "control" or some other purpose, that one could call > control codes. > > Don't let emacs confuse you by the fact that it uses integers to > represent characters. It still decode and encode them to sequences of > code when doing I/O. I simply refered to the common use of the term 'ASCII control characters', but thanks for the insights about what is going on under the hood in Emacs. -- cheers, Thorsten ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-04-03 7:06 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-04-02 7:26 Possible to write 'beginning of line' in a String? Thorsten Jolitz 2013-04-02 8:11 ` Teemu Likonen 2013-04-02 9:22 ` Thorsten Jolitz 2013-04-02 8:16 ` Andreas Röhler 2013-04-02 9:20 ` Thorsten Jolitz 2013-04-02 9:24 ` Óscar Fuentes 2013-04-02 9:41 ` Andreas Röhler 2013-04-02 9:58 ` Thorsten Jolitz [not found] ` <mailman.23288.1364897437.855.help-gnu-emacs@gnu.org> 2013-04-02 21:27 ` Pascal J. Bourguignon 2013-04-03 7:06 ` Thorsten Jolitz
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).