Regex (.NET) Capture Everything But Spaces
up vote
0
down vote
favorite
I am attempting to use a regular expression with a single capture group to turn the following:
[RuleID("MC304")]
[RuleID("MC 304")]
[RuleID("MC 30 4")]
into this:
[RuleID("MC304")]
[RuleID("MC304")]
[RuleID("MC304")]
I have accomplished this result using this regex101 example but it is pretty rudimentary:
I matched
[RuleID("(w*)s*(w*)s*(w*)s*")]
and replaced with
[RuleID("$1$2$3")]
I would like to be able to use non-capturing groups nested inside of a capture group so I can just replace the content inside of the double quotes with $1
instead of having to concatenate $1$2$3
but I don't believe this is possible.
If anyone has any guidance on how to write a regular expression that is more reusable than having to duplicate (w*)s*
for every space I expect I'd greatly appreciate the help!
Edit
I am wanting this solution to be generic for any alphanumeric string with spaces in between. The example above is for "MC304" but it could just as well be any number letter combination with spaces.
Note: I am using Visual Studio's built in find and replace feature to remove spaces from all RuleID
attributes across the entire solution.
.net regex
add a comment |
up vote
0
down vote
favorite
I am attempting to use a regular expression with a single capture group to turn the following:
[RuleID("MC304")]
[RuleID("MC 304")]
[RuleID("MC 30 4")]
into this:
[RuleID("MC304")]
[RuleID("MC304")]
[RuleID("MC304")]
I have accomplished this result using this regex101 example but it is pretty rudimentary:
I matched
[RuleID("(w*)s*(w*)s*(w*)s*")]
and replaced with
[RuleID("$1$2$3")]
I would like to be able to use non-capturing groups nested inside of a capture group so I can just replace the content inside of the double quotes with $1
instead of having to concatenate $1$2$3
but I don't believe this is possible.
If anyone has any guidance on how to write a regular expression that is more reusable than having to duplicate (w*)s*
for every space I expect I'd greatly appreciate the help!
Edit
I am wanting this solution to be generic for any alphanumeric string with spaces in between. The example above is for "MC304" but it could just as well be any number letter combination with spaces.
Note: I am using Visual Studio's built in find and replace feature to remove spaces from all RuleID
attributes across the entire solution.
.net regex
That website is really, really slow to load for me (waited several minutes and it still hasn't finished). Even if that weren't the case, could you edit your question to include the pattern you used so all the pertinent information is present in the question itself and not dependent upon external resources?
– BACON
Nov 14 at 2:30
@BACON Might be a problem closer to your end, loaded fine for me, and regex101 is generally pretty reliable
– CertainPerformance
Nov 14 at 2:33
Depends on your environment, but might you match the whole "MC 30 4" part, use another regex to remove all spaces from it, and replace the original string with that result?
– CertainPerformance
Nov 14 at 2:37
1
Not to be a downer, but why would you use RegEx for this task in the first place? Seems like a lot of overhead... Why not use string.Replace(' ', "")?
– Drunken Code Monkey
Nov 14 at 2:39
@DrunkenCodeMonkey Good question. I'm attempting to use Visual Studio's find and replace function to normalize an attribute across an existing solution.
– SupposedlySam
Nov 14 at 3:19
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am attempting to use a regular expression with a single capture group to turn the following:
[RuleID("MC304")]
[RuleID("MC 304")]
[RuleID("MC 30 4")]
into this:
[RuleID("MC304")]
[RuleID("MC304")]
[RuleID("MC304")]
I have accomplished this result using this regex101 example but it is pretty rudimentary:
I matched
[RuleID("(w*)s*(w*)s*(w*)s*")]
and replaced with
[RuleID("$1$2$3")]
I would like to be able to use non-capturing groups nested inside of a capture group so I can just replace the content inside of the double quotes with $1
instead of having to concatenate $1$2$3
but I don't believe this is possible.
If anyone has any guidance on how to write a regular expression that is more reusable than having to duplicate (w*)s*
for every space I expect I'd greatly appreciate the help!
Edit
I am wanting this solution to be generic for any alphanumeric string with spaces in between. The example above is for "MC304" but it could just as well be any number letter combination with spaces.
Note: I am using Visual Studio's built in find and replace feature to remove spaces from all RuleID
attributes across the entire solution.
.net regex
I am attempting to use a regular expression with a single capture group to turn the following:
[RuleID("MC304")]
[RuleID("MC 304")]
[RuleID("MC 30 4")]
into this:
[RuleID("MC304")]
[RuleID("MC304")]
[RuleID("MC304")]
I have accomplished this result using this regex101 example but it is pretty rudimentary:
I matched
[RuleID("(w*)s*(w*)s*(w*)s*")]
and replaced with
[RuleID("$1$2$3")]
I would like to be able to use non-capturing groups nested inside of a capture group so I can just replace the content inside of the double quotes with $1
instead of having to concatenate $1$2$3
but I don't believe this is possible.
If anyone has any guidance on how to write a regular expression that is more reusable than having to duplicate (w*)s*
for every space I expect I'd greatly appreciate the help!
Edit
I am wanting this solution to be generic for any alphanumeric string with spaces in between. The example above is for "MC304" but it could just as well be any number letter combination with spaces.
Note: I am using Visual Studio's built in find and replace feature to remove spaces from all RuleID
attributes across the entire solution.
.net regex
.net regex
edited Nov 14 at 3:56
asked Nov 14 at 2:17
SupposedlySam
18119
18119
That website is really, really slow to load for me (waited several minutes and it still hasn't finished). Even if that weren't the case, could you edit your question to include the pattern you used so all the pertinent information is present in the question itself and not dependent upon external resources?
– BACON
Nov 14 at 2:30
@BACON Might be a problem closer to your end, loaded fine for me, and regex101 is generally pretty reliable
– CertainPerformance
Nov 14 at 2:33
Depends on your environment, but might you match the whole "MC 30 4" part, use another regex to remove all spaces from it, and replace the original string with that result?
– CertainPerformance
Nov 14 at 2:37
1
Not to be a downer, but why would you use RegEx for this task in the first place? Seems like a lot of overhead... Why not use string.Replace(' ', "")?
– Drunken Code Monkey
Nov 14 at 2:39
@DrunkenCodeMonkey Good question. I'm attempting to use Visual Studio's find and replace function to normalize an attribute across an existing solution.
– SupposedlySam
Nov 14 at 3:19
add a comment |
That website is really, really slow to load for me (waited several minutes and it still hasn't finished). Even if that weren't the case, could you edit your question to include the pattern you used so all the pertinent information is present in the question itself and not dependent upon external resources?
– BACON
Nov 14 at 2:30
@BACON Might be a problem closer to your end, loaded fine for me, and regex101 is generally pretty reliable
– CertainPerformance
Nov 14 at 2:33
Depends on your environment, but might you match the whole "MC 30 4" part, use another regex to remove all spaces from it, and replace the original string with that result?
– CertainPerformance
Nov 14 at 2:37
1
Not to be a downer, but why would you use RegEx for this task in the first place? Seems like a lot of overhead... Why not use string.Replace(' ', "")?
– Drunken Code Monkey
Nov 14 at 2:39
@DrunkenCodeMonkey Good question. I'm attempting to use Visual Studio's find and replace function to normalize an attribute across an existing solution.
– SupposedlySam
Nov 14 at 3:19
That website is really, really slow to load for me (waited several minutes and it still hasn't finished). Even if that weren't the case, could you edit your question to include the pattern you used so all the pertinent information is present in the question itself and not dependent upon external resources?
– BACON
Nov 14 at 2:30
That website is really, really slow to load for me (waited several minutes and it still hasn't finished). Even if that weren't the case, could you edit your question to include the pattern you used so all the pertinent information is present in the question itself and not dependent upon external resources?
– BACON
Nov 14 at 2:30
@BACON Might be a problem closer to your end, loaded fine for me, and regex101 is generally pretty reliable
– CertainPerformance
Nov 14 at 2:33
@BACON Might be a problem closer to your end, loaded fine for me, and regex101 is generally pretty reliable
– CertainPerformance
Nov 14 at 2:33
Depends on your environment, but might you match the whole "MC 30 4" part, use another regex to remove all spaces from it, and replace the original string with that result?
– CertainPerformance
Nov 14 at 2:37
Depends on your environment, but might you match the whole "MC 30 4" part, use another regex to remove all spaces from it, and replace the original string with that result?
– CertainPerformance
Nov 14 at 2:37
1
1
Not to be a downer, but why would you use RegEx for this task in the first place? Seems like a lot of overhead... Why not use string.Replace(' ', "")?
– Drunken Code Monkey
Nov 14 at 2:39
Not to be a downer, but why would you use RegEx for this task in the first place? Seems like a lot of overhead... Why not use string.Replace(' ', "")?
– Drunken Code Monkey
Nov 14 at 2:39
@DrunkenCodeMonkey Good question. I'm attempting to use Visual Studio's find and replace function to normalize an attribute across an existing solution.
– SupposedlySam
Nov 14 at 3:19
@DrunkenCodeMonkey Good question. I'm attempting to use Visual Studio's find and replace function to normalize an attribute across an existing solution.
– SupposedlySam
Nov 14 at 3:19
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
After clarifications in the comments on the usage, you can use this pattern to match your strings. Note that you need to provide the length (without spaces) of your search string, and the search string itself (again without the spaces).
([mc304](?:s+?)?){5}
This works by using a non capturing group to isolate spaces, and by using a character class to specify which characters are legal. Note that you should not be repeating letters or numbers in there, so if you are looking for "mc300", you would use [mc30] and a length of 5. Unfortunately this will also match mc030 and mc003 etc... But maybe you can work with that by making sure manually before pressing replace...
I edited the question above. Based on what was initially given and my clarifications this is a good answer but doesn't quite do what I'm looking for. I need a solution that can be agnostic to the string that is being replaced. Any ideas?
– SupposedlySam
Nov 14 at 3:59
This is pretty much the closest I was able to get, but it seems good enough to do a manual search and replace to me... Of course please don't do a replace all or you will be sorry. I don't think there is any way to do exactly what you want, but this method will get you AT LEAST the results you want (plus many you don't want).
– Drunken Code Monkey
Nov 14 at 4:02
Would you be able to send me a link of it actually working? It doesn't seem to be matching the way I expected it to when I used my regex101 example with this.
– SupposedlySam
Nov 14 at 4:06
I just tested it in visual studio. But as I said it's not really robust as it is...
– Drunken Code Monkey
Nov 14 at 4:45
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
After clarifications in the comments on the usage, you can use this pattern to match your strings. Note that you need to provide the length (without spaces) of your search string, and the search string itself (again without the spaces).
([mc304](?:s+?)?){5}
This works by using a non capturing group to isolate spaces, and by using a character class to specify which characters are legal. Note that you should not be repeating letters or numbers in there, so if you are looking for "mc300", you would use [mc30] and a length of 5. Unfortunately this will also match mc030 and mc003 etc... But maybe you can work with that by making sure manually before pressing replace...
I edited the question above. Based on what was initially given and my clarifications this is a good answer but doesn't quite do what I'm looking for. I need a solution that can be agnostic to the string that is being replaced. Any ideas?
– SupposedlySam
Nov 14 at 3:59
This is pretty much the closest I was able to get, but it seems good enough to do a manual search and replace to me... Of course please don't do a replace all or you will be sorry. I don't think there is any way to do exactly what you want, but this method will get you AT LEAST the results you want (plus many you don't want).
– Drunken Code Monkey
Nov 14 at 4:02
Would you be able to send me a link of it actually working? It doesn't seem to be matching the way I expected it to when I used my regex101 example with this.
– SupposedlySam
Nov 14 at 4:06
I just tested it in visual studio. But as I said it's not really robust as it is...
– Drunken Code Monkey
Nov 14 at 4:45
add a comment |
up vote
0
down vote
After clarifications in the comments on the usage, you can use this pattern to match your strings. Note that you need to provide the length (without spaces) of your search string, and the search string itself (again without the spaces).
([mc304](?:s+?)?){5}
This works by using a non capturing group to isolate spaces, and by using a character class to specify which characters are legal. Note that you should not be repeating letters or numbers in there, so if you are looking for "mc300", you would use [mc30] and a length of 5. Unfortunately this will also match mc030 and mc003 etc... But maybe you can work with that by making sure manually before pressing replace...
I edited the question above. Based on what was initially given and my clarifications this is a good answer but doesn't quite do what I'm looking for. I need a solution that can be agnostic to the string that is being replaced. Any ideas?
– SupposedlySam
Nov 14 at 3:59
This is pretty much the closest I was able to get, but it seems good enough to do a manual search and replace to me... Of course please don't do a replace all or you will be sorry. I don't think there is any way to do exactly what you want, but this method will get you AT LEAST the results you want (plus many you don't want).
– Drunken Code Monkey
Nov 14 at 4:02
Would you be able to send me a link of it actually working? It doesn't seem to be matching the way I expected it to when I used my regex101 example with this.
– SupposedlySam
Nov 14 at 4:06
I just tested it in visual studio. But as I said it's not really robust as it is...
– Drunken Code Monkey
Nov 14 at 4:45
add a comment |
up vote
0
down vote
up vote
0
down vote
After clarifications in the comments on the usage, you can use this pattern to match your strings. Note that you need to provide the length (without spaces) of your search string, and the search string itself (again without the spaces).
([mc304](?:s+?)?){5}
This works by using a non capturing group to isolate spaces, and by using a character class to specify which characters are legal. Note that you should not be repeating letters or numbers in there, so if you are looking for "mc300", you would use [mc30] and a length of 5. Unfortunately this will also match mc030 and mc003 etc... But maybe you can work with that by making sure manually before pressing replace...
After clarifications in the comments on the usage, you can use this pattern to match your strings. Note that you need to provide the length (without spaces) of your search string, and the search string itself (again without the spaces).
([mc304](?:s+?)?){5}
This works by using a non capturing group to isolate spaces, and by using a character class to specify which characters are legal. Note that you should not be repeating letters or numbers in there, so if you are looking for "mc300", you would use [mc30] and a length of 5. Unfortunately this will also match mc030 and mc003 etc... But maybe you can work with that by making sure manually before pressing replace...
edited Nov 14 at 3:43
answered Nov 14 at 3:36
Drunken Code Monkey
1,3361615
1,3361615
I edited the question above. Based on what was initially given and my clarifications this is a good answer but doesn't quite do what I'm looking for. I need a solution that can be agnostic to the string that is being replaced. Any ideas?
– SupposedlySam
Nov 14 at 3:59
This is pretty much the closest I was able to get, but it seems good enough to do a manual search and replace to me... Of course please don't do a replace all or you will be sorry. I don't think there is any way to do exactly what you want, but this method will get you AT LEAST the results you want (plus many you don't want).
– Drunken Code Monkey
Nov 14 at 4:02
Would you be able to send me a link of it actually working? It doesn't seem to be matching the way I expected it to when I used my regex101 example with this.
– SupposedlySam
Nov 14 at 4:06
I just tested it in visual studio. But as I said it's not really robust as it is...
– Drunken Code Monkey
Nov 14 at 4:45
add a comment |
I edited the question above. Based on what was initially given and my clarifications this is a good answer but doesn't quite do what I'm looking for. I need a solution that can be agnostic to the string that is being replaced. Any ideas?
– SupposedlySam
Nov 14 at 3:59
This is pretty much the closest I was able to get, but it seems good enough to do a manual search and replace to me... Of course please don't do a replace all or you will be sorry. I don't think there is any way to do exactly what you want, but this method will get you AT LEAST the results you want (plus many you don't want).
– Drunken Code Monkey
Nov 14 at 4:02
Would you be able to send me a link of it actually working? It doesn't seem to be matching the way I expected it to when I used my regex101 example with this.
– SupposedlySam
Nov 14 at 4:06
I just tested it in visual studio. But as I said it's not really robust as it is...
– Drunken Code Monkey
Nov 14 at 4:45
I edited the question above. Based on what was initially given and my clarifications this is a good answer but doesn't quite do what I'm looking for. I need a solution that can be agnostic to the string that is being replaced. Any ideas?
– SupposedlySam
Nov 14 at 3:59
I edited the question above. Based on what was initially given and my clarifications this is a good answer but doesn't quite do what I'm looking for. I need a solution that can be agnostic to the string that is being replaced. Any ideas?
– SupposedlySam
Nov 14 at 3:59
This is pretty much the closest I was able to get, but it seems good enough to do a manual search and replace to me... Of course please don't do a replace all or you will be sorry. I don't think there is any way to do exactly what you want, but this method will get you AT LEAST the results you want (plus many you don't want).
– Drunken Code Monkey
Nov 14 at 4:02
This is pretty much the closest I was able to get, but it seems good enough to do a manual search and replace to me... Of course please don't do a replace all or you will be sorry. I don't think there is any way to do exactly what you want, but this method will get you AT LEAST the results you want (plus many you don't want).
– Drunken Code Monkey
Nov 14 at 4:02
Would you be able to send me a link of it actually working? It doesn't seem to be matching the way I expected it to when I used my regex101 example with this.
– SupposedlySam
Nov 14 at 4:06
Would you be able to send me a link of it actually working? It doesn't seem to be matching the way I expected it to when I used my regex101 example with this.
– SupposedlySam
Nov 14 at 4:06
I just tested it in visual studio. But as I said it's not really robust as it is...
– Drunken Code Monkey
Nov 14 at 4:45
I just tested it in visual studio. But as I said it's not really robust as it is...
– Drunken Code Monkey
Nov 14 at 4:45
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53292257%2fregex-net-capture-everything-but-spaces%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
That website is really, really slow to load for me (waited several minutes and it still hasn't finished). Even if that weren't the case, could you edit your question to include the pattern you used so all the pertinent information is present in the question itself and not dependent upon external resources?
– BACON
Nov 14 at 2:30
@BACON Might be a problem closer to your end, loaded fine for me, and regex101 is generally pretty reliable
– CertainPerformance
Nov 14 at 2:33
Depends on your environment, but might you match the whole "MC 30 4" part, use another regex to remove all spaces from it, and replace the original string with that result?
– CertainPerformance
Nov 14 at 2:37
1
Not to be a downer, but why would you use RegEx for this task in the first place? Seems like a lot of overhead... Why not use string.Replace(' ', "")?
– Drunken Code Monkey
Nov 14 at 2:39
@DrunkenCodeMonkey Good question. I'm attempting to use Visual Studio's find and replace function to normalize an attribute across an existing solution.
– SupposedlySam
Nov 14 at 3:19