regex stop searching after '%' is found
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('[A-Za-z_](?!%)')
for i in y.findall(x):
print(i,end='')
this is an example,i want the search to stop as soon as it finds % and print the previous words between them spaces in this example it should Biblioteca Nacional de Espa
,i found this link Regex stop searching at specific string but it was too complicated,any help is appreciated
python regex python-3.x
add a comment |
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('[A-Za-z_](?!%)')
for i in y.findall(x):
print(i,end='')
this is an example,i want the search to stop as soon as it finds % and print the previous words between them spaces in this example it should Biblioteca Nacional de Espa
,i found this link Regex stop searching at specific string but it was too complicated,any help is appreciated
python regex python-3.x
Possible duplicate of Regex excluding specific characters
– CertainPerformance
Nov 25 '18 at 8:38
Your input does not have spaces?
– trincot
Nov 25 '18 at 8:39
1
Why not just clip the part from the first%
, and only then get the words?x.split("%", 1)[0].split()
– trincot
Nov 25 '18 at 8:41
Why not use[^%]+
and capture the first element in array?
– Pushpesh Kumar Rajwanshi
Nov 25 '18 at 9:12
add a comment |
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('[A-Za-z_](?!%)')
for i in y.findall(x):
print(i,end='')
this is an example,i want the search to stop as soon as it finds % and print the previous words between them spaces in this example it should Biblioteca Nacional de Espa
,i found this link Regex stop searching at specific string but it was too complicated,any help is appreciated
python regex python-3.x
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('[A-Za-z_](?!%)')
for i in y.findall(x):
print(i,end='')
this is an example,i want the search to stop as soon as it finds % and print the previous words between them spaces in this example it should Biblioteca Nacional de Espa
,i found this link Regex stop searching at specific string but it was too complicated,any help is appreciated
python regex python-3.x
python regex python-3.x
asked Nov 25 '18 at 8:36
wishmasterwishmaster
1589
1589
Possible duplicate of Regex excluding specific characters
– CertainPerformance
Nov 25 '18 at 8:38
Your input does not have spaces?
– trincot
Nov 25 '18 at 8:39
1
Why not just clip the part from the first%
, and only then get the words?x.split("%", 1)[0].split()
– trincot
Nov 25 '18 at 8:41
Why not use[^%]+
and capture the first element in array?
– Pushpesh Kumar Rajwanshi
Nov 25 '18 at 9:12
add a comment |
Possible duplicate of Regex excluding specific characters
– CertainPerformance
Nov 25 '18 at 8:38
Your input does not have spaces?
– trincot
Nov 25 '18 at 8:39
1
Why not just clip the part from the first%
, and only then get the words?x.split("%", 1)[0].split()
– trincot
Nov 25 '18 at 8:41
Why not use[^%]+
and capture the first element in array?
– Pushpesh Kumar Rajwanshi
Nov 25 '18 at 9:12
Possible duplicate of Regex excluding specific characters
– CertainPerformance
Nov 25 '18 at 8:38
Possible duplicate of Regex excluding specific characters
– CertainPerformance
Nov 25 '18 at 8:38
Your input does not have spaces?
– trincot
Nov 25 '18 at 8:39
Your input does not have spaces?
– trincot
Nov 25 '18 at 8:39
1
1
Why not just clip the part from the first
%
, and only then get the words? x.split("%", 1)[0].split()
– trincot
Nov 25 '18 at 8:41
Why not just clip the part from the first
%
, and only then get the words? x.split("%", 1)[0].split()
– trincot
Nov 25 '18 at 8:41
Why not use
[^%]+
and capture the first element in array?– Pushpesh Kumar Rajwanshi
Nov 25 '18 at 9:12
Why not use
[^%]+
and capture the first element in array?– Pushpesh Kumar Rajwanshi
Nov 25 '18 at 9:12
add a comment |
1 Answer
1
active
oldest
votes
Your regex [A-Za-z_](?!%)
matches a single character in your character set that is not followed by %
. Due to which it will not print just a
and 3
that appear just before %
character and print rest every character in character set. But don't think you want that as your intended output is Biblioteca Nacional de Espa
You can use this regex,
(?<!%)([a-zA-Z]+)(?=.*%)
and find all matching inputs. Here is a sample python code,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
It prints,
Biblioteca Nacional de Espa
In case you had a typo in your post and indeed wanted to capture Biblioteca_Nacional_de_Espa
, then you just have to retain underscore (that I removed) in your character set and the regex becomes,
(?<!%)([a-zA-Z_]+)(?=.*%)
And your python code becomes,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z_]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
which outputs,
Biblioteca_Nacional_de_Espa
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53465880%2fregex-stop-searching-after-is-found%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Your regex [A-Za-z_](?!%)
matches a single character in your character set that is not followed by %
. Due to which it will not print just a
and 3
that appear just before %
character and print rest every character in character set. But don't think you want that as your intended output is Biblioteca Nacional de Espa
You can use this regex,
(?<!%)([a-zA-Z]+)(?=.*%)
and find all matching inputs. Here is a sample python code,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
It prints,
Biblioteca Nacional de Espa
In case you had a typo in your post and indeed wanted to capture Biblioteca_Nacional_de_Espa
, then you just have to retain underscore (that I removed) in your character set and the regex becomes,
(?<!%)([a-zA-Z_]+)(?=.*%)
And your python code becomes,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z_]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
which outputs,
Biblioteca_Nacional_de_Espa
add a comment |
Your regex [A-Za-z_](?!%)
matches a single character in your character set that is not followed by %
. Due to which it will not print just a
and 3
that appear just before %
character and print rest every character in character set. But don't think you want that as your intended output is Biblioteca Nacional de Espa
You can use this regex,
(?<!%)([a-zA-Z]+)(?=.*%)
and find all matching inputs. Here is a sample python code,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
It prints,
Biblioteca Nacional de Espa
In case you had a typo in your post and indeed wanted to capture Biblioteca_Nacional_de_Espa
, then you just have to retain underscore (that I removed) in your character set and the regex becomes,
(?<!%)([a-zA-Z_]+)(?=.*%)
And your python code becomes,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z_]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
which outputs,
Biblioteca_Nacional_de_Espa
add a comment |
Your regex [A-Za-z_](?!%)
matches a single character in your character set that is not followed by %
. Due to which it will not print just a
and 3
that appear just before %
character and print rest every character in character set. But don't think you want that as your intended output is Biblioteca Nacional de Espa
You can use this regex,
(?<!%)([a-zA-Z]+)(?=.*%)
and find all matching inputs. Here is a sample python code,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
It prints,
Biblioteca Nacional de Espa
In case you had a typo in your post and indeed wanted to capture Biblioteca_Nacional_de_Espa
, then you just have to retain underscore (that I removed) in your character set and the regex becomes,
(?<!%)([a-zA-Z_]+)(?=.*%)
And your python code becomes,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z_]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
which outputs,
Biblioteca_Nacional_de_Espa
Your regex [A-Za-z_](?!%)
matches a single character in your character set that is not followed by %
. Due to which it will not print just a
and 3
that appear just before %
character and print rest every character in character set. But don't think you want that as your intended output is Biblioteca Nacional de Espa
You can use this regex,
(?<!%)([a-zA-Z]+)(?=.*%)
and find all matching inputs. Here is a sample python code,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
It prints,
Biblioteca Nacional de Espa
In case you had a typo in your post and indeed wanted to capture Biblioteca_Nacional_de_Espa
, then you just have to retain underscore (that I removed) in your character set and the regex becomes,
(?<!%)([a-zA-Z_]+)(?=.*%)
And your python code becomes,
import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z_]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))
which outputs,
Biblioteca_Nacional_de_Espa
answered Nov 25 '18 at 9:57
Pushpesh Kumar RajwanshiPushpesh Kumar Rajwanshi
9,28321029
9,28321029
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53465880%2fregex-stop-searching-after-is-found%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Possible duplicate of Regex excluding specific characters
– CertainPerformance
Nov 25 '18 at 8:38
Your input does not have spaces?
– trincot
Nov 25 '18 at 8:39
1
Why not just clip the part from the first
%
, and only then get the words?x.split("%", 1)[0].split()
– trincot
Nov 25 '18 at 8:41
Why not use
[^%]+
and capture the first element in array?– Pushpesh Kumar Rajwanshi
Nov 25 '18 at 9:12