4

I need to identify substring 'X.123' and/or 'X.8' in a longer string of alphanumeric data. Ex:

A cow flew over the moon in the X.123 module, not the X.124.3 module, 
and certainly not the X.125C78 module.  The cow poo-pooed the X.8 module.

How would I exclude the second and third instance? This is what I've come up with so far to get the "X.123" part:

/[X][\.][0-9]{1,4}/

I'm not exactly sure how to make the expression stop at any non-numeric character (ex: X124C78)

Help greatly appreciated!

0

3 Answers 3

4

The \b is nice in this context, i would use it like this:

/\bX\.\d{1,4}\b/
Sign up to request clarification or add additional context in comments.

Comments

2

Try this:

/X\.[0-9]{1,4}(?=\s|$)/

Comments

1

I would use this. The \b in the start helps avoiding matches such as AX.123

/\bX\.\d+(?=\s|$)/

preg_match_all('/\bX\.\d+(?=\s|$)/', $subject, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
    # Matched text = $result[0][$i];
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.