Regex (.NET) Capture Everything But Spaces










0















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.










share|improve this question
























  • 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 '18 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 '18 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 '18 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 '18 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 '18 at 3:19















0















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.










share|improve this question
























  • 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 '18 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 '18 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 '18 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 '18 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 '18 at 3:19













0












0








0








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.










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 14 '18 at 3:56







SupposedlySam

















asked Nov 14 '18 at 2:17









SupposedlySamSupposedlySam

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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 at 3:19












1 Answer
1






active

oldest

votes


















0














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






share|improve this answer

























  • 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 '18 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 '18 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 '18 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 '18 at 4:45










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



);













draft saved

draft discarded


















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

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














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






share|improve this answer

























  • 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 '18 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 '18 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 '18 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 '18 at 4:45















0














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






share|improve this answer

























  • 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 '18 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 '18 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 '18 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 '18 at 4:45













0












0








0







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






share|improve this answer















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







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 14 '18 at 3:43

























answered Nov 14 '18 at 3:36









Drunken Code MonkeyDrunken Code Monkey

1,3681615




1,3681615












  • 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 at 4:45

















draft saved

draft discarded
















































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.




draft saved


draft discarded














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





















































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







這個網誌中的熱門文章

How to read a connectionString WITH PROVIDER in .NET Core?

Node.js Script on GitHub Pages or Amazon S3

Museum of Modern and Contemporary Art of Trento and Rovereto