Find text Between tags with a Regular Expression
I am trying to find specif text -- table names - within a
<cfquery> tag in all my cfm files. I am using an extend find
function in Homesite (I think Dreamweaver has the same
functionality). This expression works:
<[Cc][fF][qQ][uU][eE][rR][Yy]
[^>]*>[^>]*(EventName|AttendeeName)[^>]*</[Cc][fF][qQ][uU][eE][rR][Yy]>
for find the text EventName or AttendeeName. However, if
there are other cf tags like <cfif> within the
<cfquery>, then the tag/text is not found.
Can anyone help? It is a useful expression to have if you are
trying to transfer applications developed on a windows machine to
a, say, linux machine, and have table name sensititvity issues with
mySql.
quote:
Originally posted by:
Newsgroup User
Thanks for all the help. Comments below.
> Thanks, but it:
> 1) Captures everything between the first and last query
in a script if there
> is more than one cfquery in the script
Oops: sorry. Stick a question mark after the asterisks to
stop the matches
being greedy.
Used this:
<[Cc][fF][qQ][uU][eE][rR][Yy].*?(EventName|AttendeeName)[^>].*?</[Cc][fF][qQ][uU][eE][rR][ Yy]>
and got some finds again with multiple queries and some
errors as mentioned below.
> 2) It produces some regular expression errors in
Homesite.
Can't help you there. Sounds like HS's regex processor is
bung: there's
nothing non-standard or tricky about that regex (which might
cause
compatibility issues; JS vs PERL vs Java, etc).
HS on the whole is bung (IMO). Have you considered using a
text editor
that is... err... *current*? ;-)
No, can you suggest one. Just use HS for years and it does
most of what I want.
What sort of errors is it giving?
Regular expression error No 17. Bad expression format or
internal error.
> The reason for this is I am developing on a windows
machine with mysql and
> want to use the application online on a linux machine
where table names are
> case sensitive. My code was not always faithful to that
since in windows you
> can be sloppy!
Have you seen this:
http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html
It might be a better approach anyhow.
Adam
Similar Messages
-
Finding td /td tags with regular expressions
hi
first i thought that would be very easy and i used this expression:
String pattern = "<td.*>.*</td>";
but this didn't worke the way i wont. this expression returns hole body which is in between the first <td> and the last </td> tag t
hat means:
<td id=1>(some other tags and text)</td><td id=2>(some other tags and text)</td>
it retruns the whole string and no the two <td id=1>,</td> sections. now i have searched for a wokearound but i didn't finde an useful exaple
can anybody help me?
blub4everIt will work as long as there are no linefeeds in the start tag or the content, and there are no TD elements inside other TD elements. The first concern can be adressed by setting the DOTALL flag: String pattern = "(?s)<td.*?>.*?</td>";But if the tags can be nested, you have a problem: regexes don't handle nesting very well. By the way, you might find this site helpful:
http://www.regular-expressions.info/ -
What's wrong with the regular expression?
Hi all,
For the life of me I can not figure out what is wrong with this regular expression
.*\bA specific phrase\.\b.*
This is just an example the actual phrase can be an specific phrase. My problem comes when the specific phrase ends in a period. I've escaped the period but it still gives me an error. The only time I don't get an error is when I take off the end boundry character which will not suffice as a solution. I need to be able to capture all the text before and after said phrase. If the phrase doesn't have a period it would look like this...
.*\bA specific phrase\b.*
which works fine. So what is it about the \.\b combination that is not matching?
I've been banging my head on this for a while and I'm getting nowhere.
The application highlights text that comes from a server. The user builds custom highlights that have some options. Highlight entire line, match partial word, and ignore case. The code that builds my pattern is here
String strHighlight = _strHighlight;
strHighlight = strHighlight.replaceAll("\\*", "\\\\*");
strHighlight = strHighlight.replaceAll("\\.", "\\\\.");
String strPattern = strHighlight;
if(_bEntireParagraph)
if(_bPartialWord)
strPattern = ".*" + strHighlight + ".*";
else
strPattern = ".*\\b" + strHighlight + "\\b.*";
else
if(_bPartialWord)
strPattern = strHighlight;
else
strPattern = "\\b" + strHighlight + "\\b";
if(_bIgnoreCase)
_patHighlight = Pattern.compile(strPattern, Pattern.CASE_INSENSITIVE);
else
_patHighlight = Pattern.compile(strPattern);So for example I matching the phrase: The dog ate the cat. And that phrase came over in the following text: Look there's a dog. The dog ate the cat. "Oh my!"
And my user has the entire line and ignore case options selected then my regex woud look like this: .*\bThe dog ate the cat\b.*
That should get highlighted, but for some reason it doesn't. Correct me if I'm wrong but doesn't the regex read as follows:
any characters
word boundry
The dog ate the cat[period]
word boundry
any characters until newline.
Any help will be much appreciatedA word boundary (in the context of regexes) is a position that is either followed by a word character and not preceded by one (start of word) or preceded by a word character and not followed by one (end of word). A word character is defined as a letter, a digit, or an underscore. Since a period is not a word character, the only way the position following it could be a word boundary is if the next character is a letter, digit or underscore. But a sentence-ending period is always followed by whitespace, if anything, so it makes no sense to look for a word boundary there. I think, instead of \b, you should use negative lookarounds, like so: strPattern = ".*(?<!\\w)" + strHighlight + "(?!\\w).*";
-
Problems with java regular expressions
Hi everybody,
Could someone please help me sort out an issue with Java regular expressions? I have been using regular expressions in Python for years and I cannot figure out how to do what I am trying to do in Java.
For example, I have this code in java:
import java.util.regex.*;
String text = "abc";
Pattern p = Pattern.compile("(a)b(c)");
Matcher m = p.matcher(text);
if (m.matches())
int count = m.groupCount();
System.out.println("Groups found " + String.valueOf(count) );
for (int i = 0; i < count; i++)
System.out.println("group " + String.valueOf(i) + " " + m.group(i));
My expectation is that group 0 would capture "abc", group 1 - "a" and group 2 - "c". Yet, I I get this:
Groups found 2
group 0 abc
group 1 a
I have tried other patterns and input text but the issue remains the same: no matter what, I cannot capture any paranthesized expression found in the pattern except for the first one. I tried the same example with Jakarta Regexp 1.5 and that works without any problems, I get what I expect.
I am using Java 1.5.0 on Mac OS X 10.4.
Thank to all who can help.paulcw wrote:
If the group count is X, then there are X plus one groups to go through: 0 for the whole match, then 1 through X for the individual groups.It does seem confusing that the designers chose to exclude the zero-group from group count, but the documentation is clear.
Matcher.groupCount():
Group zero denotes the entire pattern by convention. It is not included in this count. -
Little help with this regular expression ?
Greetings all,
My string is like "P: A104, P105, K106" and I tried to split it using following regular expression ,but seems even though it returns 'true' as matched, it does not split the string.
Finally what I want is String is array like {"P:","A104","P105","K106"}
What seems to be the problem with my regular expression?
String PAT1="[a-zA-Z]:\\s([a-zA-Z]\\d{1,}([,]\\s)?)*";
String inp="P: A104, P105, K106";
Pattern p=Pattern.compile(PAT1);
System.out.println(p.matcher(inp).matches());
String strs[]=inp.split(PAT1);
for(String s:strs){
System.out.println("part "+s);
}pankajjaiswal10 wrote:
You can also use split(":|,")No, that will remove the colon and leave the whitespace intact. My understanding is that the OP wants to keep the colon and remove the commas and whitespace. I would use this: String[] strs = inp.split(",?\\s+"); -
Find text and replace with image - Help needed
Hi,<br /><br />We need to place the images as inline in the appropriate places.<br /><br />texttexttext<<test1.eps>>texttexttexttexttexttext<<test2.eps>>texttexttexttexttexttext< <test3.eps>>texttexttexttexttexttext<<test4.eps>>texttexttexttexttexttext<<test5.eps>>text texttext<br /><br />This code is helpful for placing a single image at a time, we are unable to place all the images in one shot, can anyone help me out.<br /><br />I am not a programmer.<br /><br />-----------<br />var myDoc = app.activeDocument; <br />app.findPreferences = app.changePreferences = null; <br />var math=document.search("test.eps"); <br />for (i=math.length-1; i >=0; i--)<br />{ myDir = Folder.selectDialog(); <br />AllGraphics = Folder(myDir).getFiles('test.eps') <br />for (i=0; i<math.length; i++) { app.select(anil1[i]); <br /> myDoc.place(AllGraphics[i],false); } }<br />-----------<br /><br />Note: I have taken this code from forum and we have made some changes on this.<br /><br />Kavya
Jongware,<br /><br />I try running it but gives errors:<br /><br />Error Number: 55<br />Error String: Object does not support the property or method 'changePreferences'<br />Line: 24<br />Source: app.findPreferences = app.changePreferences = null;<br /><br />This is the code I used<br /><br />// Find text and replace with image for InDesign CS3 <br />// http://www.adobeforums.com/webx?128@@.3bbf275d.59b6f012<br />var heyItsAnArray = new Array ( <br /><br /> "it contains this line!", <br /><br /> "as well as this one", <br /><br /> "or even more!", <br /><br /> "test.eps" ); <br /><br />for (arrayCount=0; arrayCount<heyItsAnArray.length; arrayCount++) <br /><br />{ <br /><br /> replaceImg (heyItsAnArray[arrayCount]); <br /><br /> } <br /><br />function replaceImg (name) <br /><br />{ var myDoc = app.activeDocument; <br /> app.findPreferences = app.changePreferences = null; <br /> var math=document.search(name); <br /> for (i=math.length-1; i >=0; i--) <br /> { myDir = Folder.selectDialog(); <br /> AllGraphics = Folder(myDir).getFiles(name) <br /> for (i=0; i<math.length; i++) { app.select(anil1[i]); <br /> myDoc.place(AllGraphics[i],false); <br /><br /> } <br /><br /> } <br /><br /> }<br /><br />Michael
-
Find text and replace with a pdf stored in the same folder
Hello,
I have a catalog that is updated every so often. I have written a script to find/replace the text from a .txt file. but i have a pdf that i want to insert that is part of it as well. Inside the .txt file i have the name of the document. and the pdf is stored inside the same folder as the original .indd and the .txt file.
can someone point me at some examples on how this could be done.
ThanksI use this script: it puts a txt in a text frame, check the overflow and find/replace some words with a pdf. Hope this is helpful.
Paolo
/************************FLOW************************************************
* This function looks for Overflows in the story and either resizes the *
* frame to the size of the margins (if necesary) or adds a new page and *
* a new frame, which is then linked to the previous frame.esizes the *
function flow(){
for(var i = 0; i < app.activeDocument.pages.count(); i++)
for(var b = 0; b < app.activeDocument.pages[i].textFrames.count(); b++)
if(app.activeDocument.pages[i].textFrames[b].overflows == true )
var currentPage = myDocument.pages[i];
var myPageNo = currentPage.name;
var currentFrame=currentPage.textFrames[b];
var e =currentFrame.geometricBounds[0];
var f =currentFrame.geometricBounds[1];
var g =currentFrame.geometricBounds[2];
var h =currentFrame.geometricBounds[3];
if(myPageNo %2==0){
var myMargins =currentPage.marginPreferences;
var a = currentPage.bounds[0]+myMargins.top;
var b = currentPage.bounds[1]+myMargins.right;
var c = currentPage.bounds[2]-myMargins.bottom;
var d = currentPage.bounds[3]-myMargins.left;
else{
var myMargins =currentPage.marginPreferences;
var a = currentPage.bounds[0]+myMargins.top;
var b = currentPage.bounds[1]+myMargins.left;
var c = currentPage.bounds[2]-myMargins.bottom;
var d = currentPage.bounds[3]-myMargins.right;
if (g < c)
currentFrame.geometricBounds = [a,b,c,d];
else if (g==c){
var newPage = myDocument.pages.add(LocationOptions.AFTER, currentPage);
currentPage = newPage;
myPageNo = currentPage.name;
if(myPageNo %2==0){
var myMargins =currentPage.marginPreferences;
var a = currentPage.bounds[0]+myMargins.top;
var b = currentPage.bounds[1]+myMargins.right;
var c = currentPage.bounds[2]-myMargins.bottom;
var d = currentPage.bounds[3]-myMargins.left;
var newFrame = currentPage.textFrames.add({geometricBounds:[a,b,c,d]});
newFrame.textFramePreferences.textColumnCount = 7;
newFrame.previousTextFrame = currentFrame;
else{
var myMargins =currentPage.marginPreferences;
var a = currentPage.bounds[0]+myMargins.top;
var b = currentPage.bounds[1]+myMargins.left;
var c = currentPage.bounds[2]-myMargins.bottom;
var d = currentPage.bounds[3]-myMargins.right;
var newFrame = currentPage.textFrames.add({geometricBounds:[a,b,c,d]});
newFrame.textFramePreferences.textColumnCount = 7;
newFrame.previousTextFrame = currentFrame;
//************************************END FLOW FUNCTION*********************************************
/*******************TextPlacer***************************
this script will add a text file in an existing text frame
Questo file deve essere copiato nella cartella Script di InDesign
function myGetBounds(myDocument, myPage){
var myPageWidth = myDocument.documentPreferences.pageWidth;
var myPageHeight = myDocument.documentPreferences.pageHeight
if(myPage.side == PageSideOptions.leftHand){
var myX2 = myPage.marginPreferences.left;
var myX1 = myPage.marginPreferences.right;
else{
var myX1 = myPage.marginPreferences.left;
var myX2 = myPage.marginPreferences.right;
var myY1 = myPage.marginPreferences.top;
var myX2 = myPageWidth - myX2;
var myY2 = myPageHeight - myPage.marginPreferences.bottom;
return [myY1, myX1, myY2, myX2];
/*******************ImagePlacer***************************
this script will addimages to the document by
substituting them with the name of the image file
between @s (file format included[@mypic.bmp@]),
selecting them from a specified file (see below)
and applying object styles to them, as well as
applying the right tab i necesary.
It then looks for overflows in the document. If an
overset is found, it will resize to margin size the
text frame and if overset continues, it will add a
new page and frame, which then will be linked
to the previous frame, allowing the story flow.
Questo file deve essere copiato nella cartella Script di InDesign
//Creates a new document using the specified document preset.
//Replace "myDocumentPreset" in the following line with the name
//of the document preset you want to use.
var myDocument = app.documents.add(true,app.documentPresets.item("Preset"));
//If the active document has not been saved (ever), save it.
if(app.activeDocument.saved == false){
//If you do not provide a file name, InDesign displays the Save dialog box.
app.activeDocument.save(new File("/Users/Paolo/Desktop/Documento.indd"));
function main()
var myDocument = app.documents.item(0);
var myPage = myDocument.pages.item(0);
var myTextFrame = myPage.textFrames.add({geometricBounds:myGetBounds(myDocument,myPage)});
myTextFrame.textFramePreferences.textColumnCount = 7;
myTextFrame.place(File("/Users/Paolo/Desktop/text.txt"));
//Place a text file in the text frame.
//Parameters for TextFrame.place():
//File as File object,
//[ShowingOptions as Boolean = False]
//You'll have to fill in your own file path.
//Define GREP search
var grepFind ="@@@.+@@@";
//Folders name where there are pdf, must be in the same place of the file
var myFiguresFolder = "testatine";
// Applied paragraph style
var myPStyle = myDocument.paragraphStyles.item("Paragraphstyle");
var NextPStyleCS = myDocument.paragraphStyles.item("Par_Style");
var NextPStyleEN = myDocument.paragraphStyles.item("Par_Style_en");
var NextPStyleDE = myDocument.paragraphStyles.item("Par_Style_de");
// Applied text style
var myCStyle = myDocument.characterStyles.item("text");
//Applied object style
var myOStyle = "";
var oStyle_1 = myDocument.objectStyles.item("Pictures");
var oStyle_2 = myDocument.objectStyles.item("Pictures");
var oStyle_3 = myDocument.objectStyles.item("Pictures");
//MEASUREMENTS
var maxWidth = 467; //Maximum width of an image
var maxHeight = 666; //Maximum Height of an image
var colWidth = 468; //Width of the main columb (340pt) + maximum Tab (128pt)
var maxTab = 0;
var xTab;
var xtTab;
var minTWidth = 340; //any image with a width below this will have the maximum Tab (maxTab) applied.
var PWidth; //Width of the Picture
var PHeight;//Picture Height
var myTotal;
//---------------------------------ALERTS---------------------------------\\
var notSaved = "Documento non salvato; devi prima salvare il documento";
var noFolder = "No such folder exists; "+myFiguresFolder;
var noImageMessage = "No Images were found";
var finished = " immagini sostituite"
//---------------------------------ALERTS---------------------------------\\
/************************END OF STORY*****************************************
* The object of this bit of programming is to add an empty paragraph break *
* at the end of the story, in order to make the actual script work in the case *
* that the LAST paragraph were a TABLE *
var findEnd_of_Story = "\\r(?=\\z)" //GREP for End of Story //
app.findGrepPreferences = NothingEnum.nothing; //
app.changeGrepPreferences = NothingEnum.nothing; //
app.findGrepPreferences.appliedParagraphStyle = myPStyle; //
app.findGrepPreferences.findWhat = findEnd_of_Story; //
var fItems = myDocument.findGrep(); //
var myC = fItems.length-1; //
if (fItems =!0){ //
do{ //
if (fItems.appliedParagraphStyle = myPStyle){ //
cItem = fItems[myC] //
app.changeGrepPreferences.changeTo = "$0\\r"; //
myDocument.changeGrep(); //
myC--; //
while (myC >= 0); //
try{
var myDocPath = myDocument.filePath; //Complete Path to the Current Document
catch (myError){
alert (notSaved);
//throw("");
return;
var myFFldr =Folder(myDocPath+"/"+myFiguresFolder); //Complete Path in which the figures to be placed should be found
if(myFFldr.exists){
flow();
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = grepFind;
var myFoundItems = app.activeDocument.findGrep();
var myCounter = myFoundItems.length-1
myTotal = myCounter+1;
for (i = myCounter; i >=0; i--) {
var myName = myFoundItems[i].contents.replace (/@/g, "");
app.selection = myFoundItems[i];
var fFig=app.selection[0];//Found text for
var cPStyle= fFig.appliedParagraphStyle;
var myFile = new File( myFFldr + "/" + myName);
if (myFile.exists) {
var cFig = fFig.place(myFile);
var sFig = cFig[0].parent;
switch (cPStyle){
case (myPStyle):
myOStyle =oStyle_1;
PWidth = sFig.geometricBounds[3] - sFig.geometricBounds[1];
PHeight = sFig.geometricBounds[2] - sFig.geometricBounds[0];
if (PWidth >= minTWidth){
xTab = (colWidth-PWidth);
else{
xTab =maxTab;
var currentPar = sFig.parent.paragraphs.item(0);
currentPar.leftIndent = xTab;
var nextPar= currentPar.insertionPoints[-1].paragraphs[0];
var nextParStyle = nextPar.appliedParagraphStyle;
if (nextParStyle == NextPStyleCS||nextParStyle ==NextPStyleEN||nextParStyle == NextPStyleDE){
xtTab = xTab
else {
xtTab = nextPar.leftIndent;
nextPar.leftIndent =xtTab;
sFig.appliedObjectStyle = myOStyle;
cPStyle = "";
break;
case (myPStyle):
myOStyle = oStyle_3;
sFig.appliedObjectStyle = myOStyle;
cPStyle = "";
break;
default:
myOStyle = oStyle_2;
sFig.appliedObjectStyle = myOStyle;
cPStyle = "";
break;
var oFig = sFig;
sFig = ""
flow();
//alert(myTotal + finished);
else{
alert(noFolder);
var myDocument = app.documents.item(0);
//Clear the find/change grep preferences.
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
//Set the find options.
app.findChangeGrepOptions.includeFootnotes = false;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;
//Regular expression to use
app.findGrepPreferences.findWhat = "<(.+?)>";
//Apply the change to 24-point text only.
//app.findGrepPreferences.pointSize = 24;
//app.changeGrepPreferences.underline = true;
var myFoundItems = app.activeDocument.findGrep();
var myCounter = myFoundItems.length-1
myTotal = myCounter+1;
//alert("occorrenze" + myTotal);
app.changeGrepPreferences.changeTo= "$1";
app.changeGrepPreferences.appliedCharacterStyle= myDocument.characterStyles.item("head");
myDocument.changeGrep();
for (i = myCounter; i >=0; i--) {
var myName = myFoundItems[i].contents.replace ("/</g", "");
var myName = myFoundItems[i].contents.replace ("/>/g", "");
app.selection = myFoundItems[i];
var fFig=app.selection[0];//Found text for
var myCStyle = myDocument.characterStyles.item("head");
app.selection[0].applyCharacterStyle(myCStyle, true);
//Clear the find/change preferences after the search.
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
main(); -
Matching substrings between square brackets using regular expressions
Hello,
I am new at Java and have a problem with regular expressions. Let me describe the issue in 3 steps:
1.- I have an english sentence. Some words of the sentence stand between square brackets, for example "I [eat] and [sleep]"
2- I would like to match strings that are in square brackets using regular expressions (java.util.regex.*;) and here is the code I have written for the task
+Pattern findStringinSquareBrackets = Pattern.compile("\\[.*\\]");+
+ Matcher matcherOfWordInSquareBrackets = findStringinSquareBrackets.matcher("I [eat] and [sleep]");+
+//Iteration in the string+
+ while ( matcherOfWordInSquareBrackets.find() )+
+{+
+ System.out.println("Patter found! :"+ outputField.getText().substring(matcherOfWordInSquareBrackets.start(), matcherOfWordInSquareBrackets.end())+""); +
+ }+
3- the result I have after running the code described in 2 is the following: *Patter found!: [eat] and [sleep]*
That is to say that not only words between square brackets are found but also the substring "and". And this is not what I want.
What I would like to have as a result is:
*Patter found!: [eat]*
*Patter found!: [sleep]*
That is to say I want to match only the words between the square brackets and nothing else.
Does somebody know how to do this? Any help would be great.
Best regards,
AbouYou can find the words by looping through the sentence and then return the substring within the indexes.
int start=0;
int end=0;
for(int i=0; i<string.length(); i++)
if(string.substring(i,i+1).equals("[");
start=i;
if(start!=0)
if(string.substring(i,i+1).equlas("]");
end=i;
return string.substring(start,end+1);
}something like that. This code will only find the firt word however. I do not know much about regex so I cannot help anymore.
Edited by: elasolova on Jun 16, 2009 6:45 AM
Edited by: elasolova on Jun 16, 2009 6:46 AM -
Problem with email regular expression
I found the following regular expression from this website : http://www.regular-expressions.info/email.html
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\bor
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$I am using the following website to check its success, as well as my java app. : http://www.regexplanet.com/simple/index.html
of course java has a problem with the illegal escape character so i add another "/".
In both of my testing scenarios the regex value seems to fail. Am I missing something here?
If anyone could also test this regex and verify or correct my problem I would be very grateful.
Edited by: rico16135 on Jun 5, 2010 4:01 PM
Edited by: rico16135 on Jun 5, 2010 4:02 PMrico16135 wrote:
of course java has a problem with the illegal escape character so i add another "/".I seem to be missing the distinction between a forward slash / which is not an escape character, and a backslash \ which is.
Also, if you show your actual Java code (in code tags, of course), and describe clearly and precisely what's going wrong--pasting in the exact, complete error message and indicating clearly which line caused it, if there is one--people will be in a better position to help you. -
Help with java regular expressions
Hi all ,
i am going to match a patternstring against an input string and print the result here is my code:
import java.util.regex.*;
import java.util.*;
public class Main {
private static final String CASE_INSENSITIVE = null;
public static void main(String[] args)
CharSequence inputStr = "i have 5 years FMCG saLEs exp on java/j2ee and i worked on java and j2ee and 2 projects on telecom java j2ee domain with your with saLEs maNAger experience of java j2ee and c# having very good on c++ exposure in JAVA"
String patternStr = "\"java j2ee\" and \"c#\"";
StringTokenizer st = new StringTokenizer(patternStr,"\",OR");
Matcher matcher=null;
while(st.hasMoreTokens()){
String s=st.nextToken();
Pattern pattern = Pattern.compile(s,Pattern.CASE_INSENSITIVE);
matcher = pattern.matcher(inputStr);
while (matcher.find()) {
String result = matcher.group();
if(!result.equalsIgnoreCase(" "))
System.out.println("result:"+result);
when i compile this code i am getting the expected result...ie
result:java j2ee
result:java j2ee
result: and
result: and
result: and
result: and
result: and
result: and
result:c#
but when i replace String patternStr = "\"java j2ee\" and \"c#\""; with
String patternStr = "\"java j2ee\" and \"c++\""; i am just getting c in the result instead of c++ ie i am getting result :
result:java j2ee
result:java j2ee
result: and
result: and
result: and
result: and
result: and
result: and
result:C
result:c
result:c
result:c
result:c
result:c
result:c
In the last lines i should get result:c++ instead of result: c
Any ideas please
ThanksIn the last lines i should get result:c++ instead of result: cThe regular expression parser considers the plus sign '+' a special
character; it means: one or more times the previous regular expression.
So 'c++' means one or more 'c's on or more times. Obviously you don't
want that, you want a literal '+' plus sign. You can do that by prepending
the '+' with a backslash '\'. Unfortunately, the javac compiler considers
a backslash a special character and therefore you have to 'escape'
the backslash also, by adding another backslash. The result looks
like this:"c\\+\\+"kind regards,
Jos -
Help with Understanding Regular Expressions
Hello Folks,
I need some help in understanding the Regular Expressions.
-- This returns the Expected string from the Source String. ", Redwood Shores,"
SELECT
REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA,aa',
',[^,]+,', 1, 1) "REGEXPR_SUBSTR"
FROM DUAL;
REGEXPR_SUBSTR
, Redwood Shores,
However, when the query is changed to find the Second Occurrence of the Pattern, it does not match any. IMV, it should return ", CA,"
SELECT
REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA,aa',
',[^,]+,', 1, *2*) "REGEXPR_SUBSTR"
FROM DUAL;
REGEXPR_SUBSTR
NULLCan somebody help me in understanding Why Second Query not returning ", CA,"?
I did search this forum and found link to thread "https://forums.oracle.com/forums/thread.jspa?threadID=2400143" for basic tutorials.
Regards,
P.PurveshK wrote:
Can somebody help me in understanding Why Second Query not returning ", CA,"?With your query...
SELECT
REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA,aa',
',[^,]+,', 1, *2*) "REGEXPR_SUBSTR"
FROM DUAL;You are looking for patterns of "comma followed by 1 or more non-comma chrs followed by a comma."
So, let's manually pattern match that...
'500 Oracle Parkway, Redwood Shores, CA,aa'
^ ^
| |
|
|
Here to here is the
first occurence.So the second occurance will start searching for the same pattern AFTER the first occurence.
'500 Oracle Parkway, Redwood Shores, CA,aa'
^
|
i.e. the search for the second occurence starts heretherefore the first "," from that point is...
'500 Oracle Parkway, Redwood Shores, CA,aa'
^
|
hereand there is nothing there matching the pattern you are looking for because it only has the
"comma follwed by 1 or more non-comma chrs"... but it doesn't have the "followed by a comma"
...so there is no second occurence, -
Problem with java regular expression
Hi,
I try to use the regular expression as follows
Pattern pattern = Pattern.compile("\wpub\w");
Matcher matcher = null;
matcher = pattern.matcher("38712pubeeqpwoiu");
if (matcher.matches())
System.out.println("Matched");
else
System.out.println("Not Matched");
and I always get the answer as "Not Matched". I am not sure what is wrong with the code.
thanksUse find() rather than matches().
-
Problem with my regular expression
Hi
I am trying to find function declarations within source code. I've been trying to use regular expressions, but if anyone else has an easier / better way to do this, as ross perot said, "I'm all ears"
Here's my regular expression printed out:
sb = [.]*void foo[.]*
sb is a stringbuffer variable, so the regex is [.]*void foo[.]*
Can anyone tell me why when I run this pattern on my loaded source file it tells me that the pattern does not match? LOL can you help me fix this?I doubt that regex is a very good way to find method
declarations, although you can probably make it work
reasonably well for the most common cases.You've got a point. This is just to get the ball rolling. I don't want to have to do full syntax parsing yet.
>
In your particular situation, I'd guess it has to do
with [.]*. I think that inside [], the
dot is a literal dot, not "any character." If you
want "zero or more of anything followed by void" then
it's .*void.
Just tried
sb = .*void foo.*
it still didn't work.
In any case, however, this only covers methods
returning void. For the more general case, I don'tI didn't give you all my code. I actually use a classloader and reflection to determine what the methods are, return values etc. So yes, void in this case is not overly flexible, but I can plug in whatever it is I'm looking for.
think a simple regex will do it. You need a kind of
tool that I can't recall the name of--something to
build and examine an abstract syntax tree perhaps.
Try starting here:
http://www.google.com/search?q=java+abstract+syn
tax+treeI'm not even sure it abstract syntax tree is what you
want, but I think it's at least closer than regex.
There might be something that's a step or two earlier
in the compilation process that will give you what
you want. -
Parse Mac Address with match regular expression
Hi Everyone,
I have a problem with the Match Regular Expression function,
I am trying to parse the response two a arp -a 192.168.0.15 request in order to extract MAC address of this remote IP, I used the following RegEx: ^([0-9a-fA-F]{2}[:-]){5}([0-9a-fA-F]{2})$
I am wondering why do I need to do a string subset first to extract only the MAC Address part. Isn't Match Regular Expression function capable of recognizing the RegEx directly in the middle of a string?
I only works when I extract the right tring subset as in the picture bellow.
Thanks for your answers.
Solved!
Go to Solution.
Attachments:
Mac Address.JPG 40 KBGet rid of the "^" in the beginning of your regular expression. You are instructing it to find the pattern at the beginning of the string.
Mark Yedinak
"Does anyone know where the love of God goes when the waves turn the minutes to hours?"
Wreck of the Edmund Fitzgerald - Gordon Lightfoot -
Find space between word with different endings and digit
Hi,
I'm trying to figure out how to find spaces between word and digit.
I am limited to use only word 'WORD' (either capital or small caps) with different endings like -ing -s -y and more (using \S+).
I wrote something like (?i)(?<=WORD\S+)\s(?=\d+) but this does not seem to work due to some limitation of lookahead I belive?
Any suggestions?
PeterPeter Stnsz wrote:
… find what: (\<WORD\S+)(\s)(?=\d)
change to: $1~s
Hmmh?
Your Grep do not find your first example: WORD 0,2 (WORD without any ending)
And you don't need the second ()
And please do not use \S
Use this instead:
(\<WORD\l*)\s(?=\d)
(l is the little L)
Have fun
Maybe you are looking for
-
BAPI for knowing the Billing Status of DMR(Resource Related Billing)
Dear All, I need to know the Billing Status of a Debit Memo Request from the External System. The Document Flow will be: Sales Order>DP91>DMR Creation(DR)[VA01]-->Debit Memo Creation(L2)[VF01] From the external system I need to know whether the DMR h
-
Bug in OS6 for Bluetooth connection
My BB 9700 cnnected fine with my handsfree carkit when I used OS5. After going to OS6 the connection with my carkit always gave troubles. I've experienced that after a reload of the OS (battery out and in again) the conection works fine one time. Af
-
OracleBulkCopy WritetoServer does Select * from TableName , fix it please
In Odp.Net latest version , whenever OracleBulkCopy.WritetoServer is called. It internally calls "Select * from TableName " to validate the table schema. I did some debugging and found that this is called in function GetMetaData() in OracleBulkCopy c
-
42 GB itunes library says it can't find the files
My 1113 song 42 GB itunes library says " files could not be found " when I try to play any song yet it still shows that it's using 42.82 GB on my hard drive . Where is it hiding or is it just gone ? Does any one have an idea??
-
Hi, I have installed data modeler 2.0.0 and generated relational model diagram using import option. When I try to 'print diagram to PDF file', it's generating blank PDF file, but it's generating to image file. Kindly help me to generate relational mo